PageRenderTime 69ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/s2member/includes/syscon.inc.php

https://gitlab.com/Gashler/dp
PHP | 566 lines | 452 code | 27 blank | 87 comment | 5 complexity | 7ebfbe560e8fcba0d2a2dfc94dce26ab MD5 | raw file
  1. <?php
  2. /**
  3. * System configuration for the s2Member plugin.
  4. *
  5. * **WARNING:** This is a system configuration file, please DO NOT EDIT this file directly.
  6. * Instead, use the plugin options panel in WordPress® to override these settings.
  7. *
  8. * Copyright: © 2009-2011
  9. * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
  10. * (coded in the USA)
  11. *
  12. * Released under the terms of the GNU General Public License.
  13. * You should have received a copy of the GNU General Public License,
  14. * along with this software. In the main directory, see: /licensing/
  15. * If not, see: {@link http://www.gnu.org/licenses/}.
  16. *
  17. * @package s2Member
  18. * @since 3.0
  19. */
  20. if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
  21. exit("Do not access this file directly.");
  22. /*
  23. Determine the directory.
  24. */
  25. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir"] = dirname(dirname(__FILE__));
  26. /*
  27. Determine the base directory name.
  28. */
  29. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_base"] = basename(dirname(dirname(__FILE__)));
  30. /*
  31. Determine the full URL to the directory this plugin resides in.
  32. */
  33. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] = ( /* Have to assume plugins dir? */stripos(__FILE__, WP_CONTENT_DIR) !== 0) ?
  34. plugins_url("/".basename(dirname(dirname(__FILE__)))) : // Otherwise, this gives it a chance to live anywhere in the content dir.
  35. content_url(preg_replace("/^(.*?)\/".preg_quote(basename(WP_CONTENT_DIR), "/")."/", "", str_replace(DIRECTORY_SEPARATOR, "/", dirname(dirname(__FILE__)))));
  36. /*
  37. Determine full URL to the s2Member-only file that loads WordPress® with only s2Member active.
  38. */
  39. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["s2o_url"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/".preg_replace("/\.php$/", "-o.php", basename($GLOBALS["WS_PLUGIN__"]["s2member"]["l"]));
  40. /*
  41. Determine correct ``plugin_basename()`` here. WordPress® has a few issues with its ``plugin_basename()`` function across different platforms.
  42. */
  43. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["plugin_basename"] = basename(dirname($GLOBALS["WS_PLUGIN__"]["s2member"]["l"]))."/".basename($GLOBALS["WS_PLUGIN__"]["s2member"]["l"]);
  44. /*
  45. Configure the number of Membership Levels being used with s2Member. This is now possible. All areas of s2Member are now capable of adapting to this.
  46. */
  47. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"] = /* Hard coded in at 4 Levels. This can only be extended when/if s2Member Pro is installed. */ 4;
  48. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["min_levels"] = /* A lower limit to protect the integrity of the s2Member software application. */ 1;
  49. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["max_levels"] = /* Filterable. */ apply_filters("ws_plugin__s2member_max_levels", 100);
  50. /*
  51. Configure regular expression matches for Membership Access Item Numbers (including those with only Custom Capabilities).
  52. */
  53. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_w_level_regex"] = "/^([1-9][0-9]*)(?:(?:\:((?:-all\+|\+-all|-all|\+)?[a-z_0-9,\+]*)?)?(?:\:([0-9]+ [A-Z])?)?)?$/";
  54. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_wo_level_regex"] = "/^(\*)(?:(?:\:((?:-all\+|\+-all|-all|\+)?[a-z_0-9,\+]*)?)?(?:\:([0-9]+ [A-Z])?)?)?$/";
  55. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_w_or_wo_level_regex"] = "/^([1-9][0-9]*|\*)(?:(?:\:((?:-all\+|\+-all|-all|\+)?[a-z_0-9,\+]*)?)?(?:\:([0-9]+ [A-Z])?)?)?$/";
  56. /*
  57. Configure regular expression match for Specific Post/Page Access Item Numbers (all elements required here).
  58. */
  59. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["sp_access_item_number_regex"] = "/^(sp)(?:(?:\:([1-9][0-9,]*))(?:\:([1-9][0-9]*)))$/";
  60. /*
  61. Configure multibyte detection order when charset is unknown ( used by calls to `mb_convert_encoding()` ).
  62. */
  63. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["mb_detection_order"] = "UTF-8, ISO-8859-1, WINDOWS-1252, ASCII, JIS, EUC-JP, SJIS";
  64. /*
  65. Configure an array of file extensions associated with streaming media file types. See: <http://www.spartanicus.utvinternet.ie/streaming.htm> Also see: <http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12539/supported-video-and-audio-formats>
  66. */
  67. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["streaming_file_extns"] = array_unique(array("avi", "wav", "mpa", "mpeg", "mpv", "mps", "m1v", "m2v", "mp4", "mp3", "m3u", "mp4", "flv", "f4v", "3gp", "3g2", "aac", "m4a", "webm", "ogg", "ogv", "pls", "m3u", "ogm", "m4u", "mov", "qtl", "mp4", "asf", "wmv", "wvx", "wma", "wax", "ra", "rm", "ram"));
  68. /*
  69. Configure directory and .htaccess for files protected by s2Member.
  70. */
  71. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_files_dir"] = dirname(dirname(__FILE__))."-files".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : "");
  72. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"] = apply_filters("ws_plugin__s2member_files_dir", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_files_dir"]);
  73. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files-no-gzip.php";
  74. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-files.php";
  75. /*
  76. Configure the directory for logs protected by s2Member.
  77. */
  78. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_logs_dir"] = dirname(dirname(__FILE__))."-logs".((stripos(PHP_OS, "win") === 0 && stripos($_SERVER["SERVER_SOFTWARE"], "apache") === false) ? "/app_data" : "");
  79. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"] = apply_filters("ws_plugin__s2member_logs_dir", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["default_logs_dir"]);
  80. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir_htaccess"] = dirname(__FILE__)."/templates/cfg-files/s2member-logs.php";
  81. /*
  82. Configure the global reCaptcha (www.websharks-inc.net / or any domain). These public/private keys work on any installation.
  83. */
  84. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["recaptcha"] = array("public_key" => "6LeCANsSAAAAAIIrlB3FrXe42mr0OSSZpT0pkpFK", "private_key" => "6LeCANsSAAAAAGBXMIKAirv6G4PmaGa-ORxdD-oZ", "lang" => _x("en", "s2member-front recaptcha-lang-code", "s2member"));
  85. /*
  86. Configure the right menu options panel for s2Member.
  87. */
  88. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"] = array("updates" => true, "upsell-pro" => true, "installation" => false, "tools" => false, "kb" => true, "videos" => true, "support" => true, "donations" => true);
  89. /*
  90. Check if s2Member has been configured *should be set after the first config via options panel*.
  91. */
  92. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["configured"] = get_option("ws_plugin__s2member_configured");
  93. /*
  94. This is a special option cache that holds some additional information autoloaded into WordPress®.
  95. */
  96. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"] = get_option("ws_plugin__s2member_cache");
  97. /*
  98. Configure checksum time for the syscon.inc.php file.
  99. */
  100. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["checksum"] = filemtime(__FILE__);
  101. /*
  102. Configure an array of pluggable functions handled by s2Member.
  103. */
  104. $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["pluggables"] = array();
  105. /*
  106. Configure & validate all of the s2Member options; and set their defaults.
  107. */
  108. if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
  109. {
  110. /**
  111. * Configures an options array for the s2Member plugin.
  112. *
  113. * **WARNING:** This is a system configuration function, please DO NOT EDIT this function directly.
  114. * Instead, use the plugin options panel in WordPress® to override these settings.
  115. *
  116. * @package s2Member
  117. * @since 3.0
  118. *
  119. * @param array $options Optional. An array of new options, to be merged with the defaults.
  120. * @return array This merged array of options: ``$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]``
  121. */
  122. function ws_plugin__s2member_configure_options_and_their_defaults($options = FALSE)
  123. {
  124. global $current_site, $current_blog;
  125. $default_options["options_checksum"] = "";
  126. $default_options["options_version"] = "1.0";
  127. $default_options["gateway_debug_logs"] = "0";
  128. $default_options["gateway_debug_logs_extensive"] = "0";
  129. $default_options["sec_encryption_key"] = "";
  130. $default_options["sec_encryption_key_history"] = array();
  131. $default_options["s_badge_status_enabled"] = "0";
  132. $default_options["max_ip_restriction"] = "5";
  133. $default_options["max_ip_restriction_time"] = "3600";
  134. $default_options["max_failed_login_attempts"] = "5";
  135. $default_options["run_deactivation_routines"] = "0";
  136. $default_options["custom_reg_fields"] = "";
  137. $default_options["custom_reg_names"] = "1";
  138. $default_options["custom_reg_display_name"] = "full";
  139. $default_options["custom_reg_password"] = "0";
  140. $default_options["custom_reg_opt_in"] = "1";
  141. $default_options["custom_reg_opt_in_label"] = _x("Yes, I want to receive updates via email.", "s2member-front", "s2member");
  142. $default_options["custom_reg_auto_opt_outs"] = array();
  143. $default_options["custom_reg_auto_opt_out_transitions"] = "0";
  144. $default_options["custom_reg_fields_4bp"] = array();
  145. $default_options["custom_reg_force_personal_emails"] = "";
  146. $default_options["allow_subscribers_in"] = "0";
  147. $default_options["force_admin_lockouts"] = "0";
  148. $default_options["filter_wp_query"] = array();
  149. $default_options["default_url_shortener"] = "tiny_url";
  150. $default_options["default_custom_str_url_shortener"] = "";
  151. $default_options["mms_auto_patch"] = "1";
  152. $default_options["mms_registration_file"] = "wp-login";
  153. $default_options["mms_registration_grants"] = "none";
  154. for($n = 0, $v = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++, $v = $v + 5)$default_options["mms_registration_blogs_level".$n] = (string)$v;
  155. $default_options["login_welcome_page"] = "";
  156. $default_options["login_redirection_override"] = "";
  157. $default_options["login_redirection_always_http"] = "1";
  158. $default_options["membership_options_page"] = "";
  159. $default_options["login_reg_design_enabled"] = "1";
  160. $default_options["login_reg_background_color"] = "FFFFFF";
  161. $default_options["login_reg_background_image"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images/bg.png";
  162. $default_options["login_reg_background_image_repeat"] = "repeat";
  163. $default_options["login_reg_background_text_color"] = "000000";
  164. $default_options["login_reg_background_text_shadow_color"] = "EEEEEE";
  165. $default_options["login_reg_background_box_shadow_color"] = "EEEEEE";
  166. $default_options["login_reg_logo_src"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images/logo.png";
  167. $default_options["login_reg_logo_src_width"] = "550";
  168. $default_options["login_reg_logo_src_height"] = "100";
  169. $default_options["login_reg_logo_url"] = home_url("/");
  170. $default_options["login_reg_logo_title"] = get_bloginfo("name");
  171. $default_options["login_reg_font_size"] = "12px";
  172. $default_options["login_reg_font_family"] = "'Verdana', 'Arial', sans-serif";
  173. $default_options["login_reg_font_field_size"] = "18px";
  174. $default_options["login_reg_footer_backtoblog"] = "0";
  175. $default_options["login_reg_footer_design"] = "";
  176. $default_options["reg_email_from_name"] = get_bloginfo("name");
  177. $default_options["reg_email_from_email"] = get_bloginfo("admin_email");
  178. $default_options["reg_email_support_link"] = "mailto:".get_bloginfo("admin_email");
  179. $default_options["new_user_emails_enabled"] = "0";
  180. $default_options["new_user_email_subject"] = sprintf(_x("[%s] Username/Password", "s2member-front", "s2member"), get_bloginfo("name"));
  181. $default_options["new_user_email_message"] = sprintf(_x("Your Username/Password for:\n%s\n\nUsername: %%%%user_login%%%%\nPassword: %%%%user_pass%%%%\n%%%%wp_login_url%%%%", "s2member-front", "s2member"), get_bloginfo("name"));
  182. $default_options["new_user_admin_email_recipients"] = get_bloginfo("admin_email");
  183. $default_options["new_user_admin_email_subject"] = sprintf(_x("[%s] New User Registration", "s2member-front", "s2member"), get_bloginfo("name"));
  184. $default_options["new_user_admin_email_message"] = sprintf(_x("New User Registration on your site:\n%s\n\nUser ID: %%%%user_id%%%%\nUsername: %%%%user_login%%%%\nEmail: %%%%user_email%%%%\nIP Address: %%%%user_ip%%%%", "s2member-front", "s2member"), get_bloginfo("name"));
  185. $default_options["paypal_sandbox"] = "0";
  186. $default_options["paypal_business"] = "";
  187. $default_options["paypal_api_username"] = "";
  188. $default_options["paypal_api_password"] = "";
  189. $default_options["paypal_api_signature"] = "";
  190. $default_options["paypal_identity_token"] = "";
  191. $default_options["paypal_btn_encryption"] = "0";
  192. $default_options["paypal_payflow_api_username"] = "";
  193. $default_options["paypal_payflow_api_partner"] = "PayPal";
  194. $default_options["paypal_payflow_api_vendor"] = "";
  195. $default_options["paypal_payflow_api_password"] = "";
  196. $default_options["signup_tracking_codes"] = "";
  197. $default_options["modification_tracking_codes"] = "";
  198. $default_options["ccap_tracking_codes"] = "";
  199. $default_options["sp_tracking_codes"] = "";
  200. $default_options["signup_email_recipients"] = '"%%full_name%%" <%%payer_email%%>';
  201. $default_options["signup_email_subject"] = _x("Congratulations! (your membership has been approved)", "s2member-front", "s2member");
  202. $default_options["signup_email_message"] = sprintf(_x("Thanks %%%%first_name%%%%! Your membership has been approved.\n\nIf you haven't already done so, the next step is to Register a Username.\n\nComplete your registration here:\n%%%%registration_url%%%%\n\nIf you have any trouble, please feel free to contact us.\n\nBest Regards,\n%s", "s2member-front", "s2member"), get_bloginfo("name"));
  203. $default_options["sp_email_recipients"] = '"%%full_name%%" <%%payer_email%%>';
  204. $default_options["sp_email_subject"] = _x("Thank You! (instructions for access)", "s2member-front", "s2member");
  205. $default_options["sp_email_message"] = sprintf(_x("Thanks %%%%first_name%%%%!\n\n%%%%item_name%%%%\n\nYour order can be retrieved here:\n%%%%sp_access_url%%%%\n( link expires in %%%%sp_access_exp%%%% )\n\nIf you have any trouble, please feel free to contact us.\n\nBest Regards,\n%s", "s2member-front", "s2member"), get_bloginfo("name"));
  206. $default_options["mailchimp_api_key"] = "";
  207. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)$default_options["level".$n."_mailchimp_list_ids"] = "";
  208. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)$default_options["level".$n."_aweber_list_ids"] = "";
  209. $default_options["signup_notification_urls"] = "";
  210. $default_options["registration_notification_urls"] = "";
  211. $default_options["payment_notification_urls"] = "";
  212. $default_options["modification_notification_urls"] = "";
  213. $default_options["cancellation_notification_urls"] = "";
  214. $default_options["eot_del_notification_urls"] = "";
  215. $default_options["ref_rev_notification_urls"] = "";
  216. $default_options["sp_sale_notification_urls"] = "";
  217. $default_options["sp_ref_rev_notification_urls"] = "";
  218. $default_options["signup_notification_recipients"] = "";
  219. $default_options["registration_notification_recipients"] = "";
  220. $default_options["payment_notification_recipients"] = "";
  221. $default_options["modification_notification_recipients"] = "";
  222. $default_options["cancellation_notification_recipients"] = "";
  223. $default_options["eot_del_notification_recipients"] = "";
  224. $default_options["ref_rev_notification_recipients"] = "";
  225. $default_options["sp_sale_notification_recipients"] = "";
  226. $default_options["sp_ref_rev_notification_recipients"] = "";
  227. for($n = 0, $l = array(_x("Free Subscriber", "s2member-front", "s2member"), _x("Bronze Member", "s2member-front", "s2member"), _x("Silver Member", "s2member-front", "s2member"), _x("Gold Member", "s2member-front", "s2member"), _x("Platinum Member", "s2member-front", "s2member")); $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)$default_options["level".$n."_label"] = (!empty($l[$n])) ? $l[$n] : sprintf(_x("Level %s Member", "s2member-front", "s2member"), $n);
  228. $default_options["apply_label_translations"] = "0";
  229. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)$default_options["level".$n."_file_downloads_allowed"] = "";
  230. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)$default_options["level".$n."_file_downloads_allowed_days"] = "";
  231. $default_options["file_download_limit_exceeded_page"] = "";
  232. $default_options["file_download_inline_extensions"] = "";
  233. $default_options["file_download_stream_extensions"] = "";
  234. $default_options["amazon_s3_files_bucket"] = "";
  235. $default_options["amazon_s3_files_access_key"] = "";
  236. $default_options["amazon_s3_files_secret_key"] = "";
  237. $default_options["amazon_cf_files_private_key"] = "";
  238. $default_options["amazon_cf_files_private_key_id"] = "";
  239. $default_options["amazon_cf_files_distros_access_id"] = "";
  240. $default_options["amazon_cf_files_distros_s3_access_id"] = "";
  241. $default_options["amazon_cf_files_distro_downloads_id"] = "";
  242. $default_options["amazon_cf_files_distro_downloads_cname"] = "";
  243. $default_options["amazon_cf_files_distro_downloads_dname"] = "";
  244. $default_options["amazon_cf_files_distro_streaming_id"] = "";
  245. $default_options["amazon_cf_files_distro_streaming_cname"] = "";
  246. $default_options["amazon_cf_files_distro_streaming_dname"] = "";
  247. $default_options["amazon_cf_files_distros_auto_config_status"] = "";
  248. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
  249. $default_options["level".$n."_ruris"] = "";
  250. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
  251. $default_options["level".$n."_catgs"] = "";
  252. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
  253. $default_options["level".$n."_ptags"] = "";
  254. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
  255. $default_options["level".$n."_posts"] = "";
  256. for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
  257. $default_options["level".$n."_pages"] = "";
  258. $default_options["specific_ids"] = "";
  259. $default_options["triggers_immediate_eot"] = "refunds,reversals";
  260. $default_options["membership_eot_behavior"] = "demote";
  261. $default_options["eot_time_ext_behavior"] = "extend";
  262. $default_options["auto_eot_system_enabled"] = "1";
  263. $default_options["eots_remove_ccaps"] = "1";
  264. $default_options["eot_grace_time"] = "86400";
  265. $default_options["wp_footer_code"] = "";
  266. $default_options = apply_filters("ws_plugin__s2member_default_options", $default_options);
  267. unset($n, $v, $l); // Unset/cleanup these working variables from the routines above.
  268. /*
  269. Here they are merged. User options will overwrite some or all default values.
  270. */
  271. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] = array_merge($default_options, (($options !== false) ? (array)$options : (array)get_option("ws_plugin__s2member_options")));
  272. // Back compatibility for `filter_wp_query`. Changed in v110912 to array.
  273. if(is_string($_ov = &$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"]))
  274. $_ov = (!$_ov || $_ov === "none") ? $default_options["filter_wp_query"] : array_unique(preg_split("/[;,\r\n\t\s ]+/", $_ov));
  275. // Backward compatibility for old logo image width of 500 pixels. Changed in v110604.
  276. if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src"] === $default_options["login_reg_logo_src"])
  277. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src_width"] = $default_options["login_reg_logo_src_width"];
  278. // Backward compatibility for PayPal® API Credentials. Starting with v3.5+, this info is stored by the free version of s2Member.
  279. if(empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_username"]) && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_username"]))
  280. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_username"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_username"];
  281. if(empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"]) && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_password"]))
  282. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_password"];
  283. if(empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"]) && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_signature"]))
  284. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_signature"];
  285. /*
  286. This builds an MD5 checksum for the full array of options. This also includes the config checksum and the current set of default options.
  287. */
  288. $checksum = md5(($checksum_prefix = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["checksum"].serialize($default_options)).serialize(array_merge($GLOBALS["WS_PLUGIN__"]["s2member"]["o"], array("options_checksum" => 0))));
  289. /*
  290. Validate each option, possibly reverting back to the default value in some cases. This is only processed when/if the checksum is not up-to-date.
  291. */
  292. if($options !== false || ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_checksum"] !== $checksum && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] !== $default_options))
  293. {
  294. foreach($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $key => &$value)
  295. {
  296. if(!isset($default_options[$key]) && !preg_match("/^pro_/", $key))
  297. unset($GLOBALS["WS_PLUGIN__"]["s2member"]["o"][$key]);
  298. else if($key === "options_checksum" && (!is_string($value) || !strlen($value)))
  299. $value = $default_options[$key];
  300. else if($key === "options_version" && (!is_string($value) || !is_numeric($value)))
  301. $value = $default_options[$key];
  302. else if(preg_match("/^gateway_debug_logs|gateway_debug_logs_extensive/", $key) && (!is_string($value) || !is_numeric($value)))
  303. $value = $default_options[$key];
  304. else if($key === "sec_encryption_key" && (!is_string($value) || !strlen($value)))
  305. $value = $default_options[$key];
  306. else if($key === "sec_encryption_key_history" && (!is_array($value) || empty($value)))
  307. $value = $default_options[$key];
  308. else if($key === "s_badge_status_enabled" && (!is_string($value) || !is_numeric($value)))
  309. $value = $default_options[$key];
  310. else if($key === "max_ip_restriction" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
  311. $value = $default_options[$key];
  312. else if($key === "max_ip_restriction_time" && (!is_string($value) || !is_numeric($value) || $value < 300 || $value > 31556926))
  313. $value = $default_options[$key];
  314. else if($key === "max_failed_login_attempts" && (!is_string($value) || !is_numeric($value) || $value < 0 || $value > 100))
  315. $value = $default_options[$key];
  316. else if($key === "run_deactivation_routines" && (!is_string($value) || !is_numeric($value)))
  317. $value = $default_options[$key];
  318. else if($key === "custom_reg_fields" && (!is_string($value) || !strlen($value)))
  319. $value = $default_options[$key];
  320. else if(preg_match("/^custom_reg_(?:names|password|opt_in|auto_opt_out_transitions)$/", $key) && (!is_string($value) || !is_numeric($value)))
  321. $value = $default_options[$key];
  322. else if($key === "custom_reg_display_name" && (!is_string($value) || !preg_match("/^(?:full|first|last|login|0)$/", $value)))
  323. $value = $default_options[$key];
  324. else if($key === "custom_reg_opt_in_label" && (!is_string($value) || !strlen($value)))
  325. $value = $default_options[$key];
  326. else if($key === "custom_reg_auto_opt_outs" && (!is_array($value) || empty($value)))
  327. $value = $default_options[$key];
  328. else if($key === "custom_reg_fields_4bp" && (!is_array($value) || empty($value)))
  329. $value = $default_options[$key];
  330. else if($key === "custom_reg_force_personal_emails" && (!is_string($value) || !strlen($value = preg_replace("/\s+/", "", $value))))
  331. $value = $default_options[$key];
  332. else if($key === "allow_subscribers_in" && (!is_string($value) || !is_numeric($value)))
  333. $value = $default_options[$key];
  334. else if($key === "mms_auto_patch" && (!is_string($value) || !is_numeric($value)))
  335. $value = $default_options[$key];
  336. else if($key === "mms_registration_file" && (!is_string($value) || !preg_match("/^(?:wp-login|wp-signup)$/", $value)))
  337. $value = $default_options[$key];
  338. else if($key === "mms_registration_grants" && (!is_string($value) || !preg_match("/^(?:none|user|all)$/", $value)))
  339. $value = $default_options[$key];
  340. else if(preg_match("/^mms_registration_blogs_level[0-9]+$/", $key) && (!is_string($value) || !is_numeric($value) || $value < 0))
  341. $value = $default_options[$key];
  342. else if($key === "force_admin_lockouts" && (!is_string($value) || !is_numeric($value)))
  343. $value = $default_options[$key];
  344. else if($key === "filter_wp_query" && !is_array($value) /* This array CAN be empty. */)
  345. $value = $default_options[$key];
  346. else if(preg_match("/^default_(?:custom_str_)?url_shortener$/", $key) && (!is_string($value) || !strlen($value)))
  347. $value = $default_options[$key];
  348. else if($key === "login_welcome_page" && (!is_string($value) || !is_numeric($value)))
  349. $value = $default_options[$key];
  350. else if($key === "login_redirection_override" && (!is_string($value) || !strlen($value)))
  351. $value = $default_options[$key];
  352. else if($key === "login_redirection_always_http" && (!is_string($value) || !is_numeric($value)))
  353. $value = $default_options[$key];
  354. else if($key === "membership_options_page" && (!is_string($value) || !is_numeric($value)))
  355. $value = $default_options[$key];
  356. else if($key === "login_reg_design_enabled" && (!is_string($value) || !is_numeric($value)))
  357. $value = $default_options[$key];
  358. else if($key === "login_reg_background_image" && !is_string($value) /* This is optional. */)
  359. $value = $default_options[$key];
  360. else if($key === "login_reg_background_image_repeat" && (!is_string($value) || !preg_match("/^(?:repeat|repeat-x|repeat-y|no-repeat)$/", $value)))
  361. $value = $default_options[$key];
  362. else if(preg_match("/^login_reg_(?:background|logo|font|footer)_/", $key) && !preg_match("/background_image/", $key) && (!is_string($value) || !strlen($value)))
  363. $value = $default_options[$key];
  364. else if($key === "login_reg_footer_backtoblog" && (!is_string($value) || !is_numeric($value)))
  365. $value = $default_options[$key];
  366. else if(preg_match("/^reg_email_(?:from_name|from_email|support_link)$/", $key) && (!is_string($value) || !strlen($value)))
  367. $value = $default_options[$key];
  368. else if($key === "new_user_emails_enabled" && (!is_string($value) || !is_numeric($value)))
  369. $value = $default_options[$key];
  370. else if(preg_match("/^new_user_email_(?:subject|message)$/", $key) && (!is_string($value) || !strlen($value)))
  371. $value = $default_options[$key];
  372. else if(preg_match("/^new_user_admin_email_(?:recipients|subject|message)$/", $key) && (!is_string($value) || !strlen($value)))
  373. $value = $default_options[$key];
  374. else if($key === "paypal_sandbox" && (!is_string($value) || !is_numeric($value)))
  375. $value = $default_options[$key];
  376. else if(preg_match("/^paypal_(?:business|api_username|api_password|api_signature|identity_token)$/", $key) && (!is_string($value) || !strlen($value)))
  377. $value = $default_options[$key];
  378. else if(preg_match("/^paypal_payflow(?:api_username|api_partner|api_vendor|api_password)$/", $key) && (!is_string($value) || !strlen($value)))
  379. $value = $default_options[$key];
  380. else if($key === "paypal_btn_encryption" && (!is_string($value) || !is_numeric($value)))
  381. $value = $default_options[$key];
  382. else if(preg_match("/^(?:signup|modification|ccap|sp)_tracking_codes$/", $key) && (!is_string($value) || !strlen($value)))
  383. $value = $default_options[$key];
  384. else if(preg_match("/^(?:signup|sp)_email_recipients$/", $key) && !is_string($value) /* Can be empty. */)
  385. $value = $default_options[$key];
  386. else if(preg_match("/^(?:signup|sp)_email_(?:subject|message)$/", $key) && (!is_string($value) || !strlen($value)))
  387. $value = $default_options[$key];
  388. else if($key === "mailchimp_api_key" && (!is_string($value) || !strlen($value)))
  389. $value = $default_options[$key];
  390. else if(preg_match("/^level[0-9]+_mailchimp_list_ids$/", $key) && (!is_string($value) || !strlen($value = preg_replace("/[\r\n\t]+/", "", $value))))
  391. $value = $default_options[$key];
  392. else if(preg_match("/^level[0-9]+_aweber_list_ids$/", $key) && (!is_string($value) || !strlen($value = preg_replace("/\s+/", "", $value))))
  393. $value = $default_options[$key];
  394. else if(preg_match("/^(?:signup|registration|payment|modification|cancellation|eot_del|ref_rev|sp_sale|sp_ref_rev)_notification_urls$/", $key) && (!is_string($value) || !strlen($value)))
  395. $value = $default_options[$key];
  396. else if(preg_match("/^(?:signup|registration|payment|modification|cancellation|eot_del|ref_rev|sp_sale|sp_ref_rev)_notification_recipients$/", $key) && (!is_string($value) || !strlen($value)))
  397. $value = $default_options[$key];
  398. else if(preg_match("/^level[0-9]+_label$/", $key) && (!is_string($value) || !strlen($value)))
  399. $value = $default_options[$key];
  400. else if($key === "apply_label_translations" && (!is_string($value) || !is_numeric($value)))
  401. $value = $default_options[$key];
  402. else if(preg_match("/^level[0-9]+_file_downloads_allowed$/", $key) && (!is_string($value) || !is_numeric($value) || $value < 0))
  403. $value = $default_options[$key];
  404. else if(preg_match("/^level[0-9]+_file_downloads_allowed_days$/", $key) && (!is_string($value) || !is_numeric($value) || $value < 0))
  405. $value = $default_options[$key];
  406. else if($key === "file_download_limit_exceeded_page" && (!is_string($value) || !is_numeric($value)))
  407. $value = $default_options[$key];
  408. else if(preg_match("/^file_download_(?:inline|stream)_extensions$/", $key) && (!is_string($value) || !($value = strtolower(preg_replace("/\s+/", "", $value)))))
  409. $value = $default_options[$key];
  410. else if(preg_match("/^amazon_(?:s3|cf)_files_/", $key) && (!is_string($value) || !strlen($value)))
  411. $value = $default_options[$key];
  412. else if(preg_match("/^level[0-9]+_ruris$/", $key) && (!is_string($value) || !strlen($value)))
  413. $value = $default_options[$key];
  414. else if(preg_match("/^level[0-9]+_catgs$/", $key) && (!is_string($value) || !($value = ((strcasecmp($value, "all") === 0) ? strtolower($value) : trim(preg_replace("/[^0-9,]/", "", $value), ",")))))
  415. $value = $default_options[$key];
  416. else if(preg_match("/^level[0-9]+_ptags$/", $key) && (!is_string($value) || !($value = ((strcasecmp($value, "all") === 0) ? strtolower($value) : trim(preg_replace("/ +/", " ", trim(preg_replace("/ *, */", ",", $value))), ",")))))
  417. $value = $default_options[$key];
  418. else if(preg_match("/^level[0-9]+_posts$/", $key) && (!is_string($value) || !($value = trim( /* Supports `all` or `1,2,3,all-[type]s`. */preg_replace("/[^a-z0-9_\-,]/", "", strtolower($value)), ","))))
  419. $value = $default_options[$key];
  420. else if(preg_match("/^level[0-9]+_pages$/", $key) && (!is_string($value) || !($value = ((strcasecmp($value, "all") === 0) ? strtolower($value) : trim(preg_replace("/[^0-9,]/", "", $value), ",")))))
  421. $value = $default_options[$key];
  422. else if($key === "specific_ids" && (!is_string($value) || !($value = trim(preg_replace("/[^0-9,]/", "", $value), ","))))
  423. $value = $default_options[$key];
  424. else if($key === "triggers_immediate_eot" && (!is_string($value) || !preg_match("/^(?:none|refunds|reversals|refunds,reversals)$/", $value)))
  425. $value = $default_options[$key];
  426. else if($key === "membership_eot_behavior" && (!is_string($value) || !preg_match("/^(?:demote|delete)$/", $value)))
  427. $value = $default_options[$key];
  428. else if($key === "eot_time_ext_behavior" && (!is_string($value) || !preg_match("/^(?:extend|reset)$/", $value)))
  429. $value = $default_options[$key];
  430. else if(preg_match("/^(?:auto_eot_system_enabled|eot_grace_time|eots_remove_ccaps)$/", $key) && (!is_string($value) || !is_numeric($value)))
  431. $value = $default_options[$key];
  432. else if($key === "wp_footer_code" && (!is_string($value) || !strlen($value)))
  433. $value = $default_options[$key];
  434. }
  435. if($options !== false && is_string($options["sec_encryption_key"]) && strlen($options["sec_encryption_key"]) && !in_array($options["sec_encryption_key"], $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"]))
  436. {
  437. array_unshift($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], $options["sec_encryption_key"]);
  438. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"] = array_slice($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], 0, 10);
  439. }
  440. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] = apply_filters_ref_array("ws_plugin__s2member_options_before_checksum", array(&$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]));
  441. $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_checksum"] = md5($checksum_prefix.serialize(array_merge($GLOBALS["WS_PLUGIN__"]["s2member"]["o"], array("options_checksum" => 0))));
  442. }
  443. return apply_filters_ref_array("ws_plugin__s2member_options", array(&$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]));
  444. }
  445. }
  446. ?>