PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 110926
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v110926
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 releases
s2member / includes / syscon.inc.php

syscon.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions 110926, at includes/syscon.inc.php

542 lines 32.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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"] = (stripos (__FILE__, WP_CONTENT_DIR) !== 0) ? /* Have to assume plugins dir? */
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 Configure the number of Membership Levels being used with s2Member. This is NOT ready ( yet ). Some areas of s2Member are still hard-coded at 4 Levels + Subscribers.
42 */
43 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"] = 4; /* Hard coded in at 4 Levels. This can only be extended when/if s2Member Pro is installed. */
44 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["min_levels"] = 1; /* A lower limit to protect the integrity of the s2Member software application. */
45 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["max_levels"] = apply_filters ("ws_plugin__s2member_max_levels", 100); /* Filterable. */
46 /*
47 Configure regular expression matches for Membership Access Item Numbers ( including those with only Custom Capabilities ).
48 */
49 $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])?)?)?$/";
50 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_wo_level_regex"] = "/^(\*)(?:(?:\:((?:-all\+|\+-all|-all|\+)?[a-z_0-9,\+]*)?)?(?:\:([0-9]+ [A-Z])?)?)?$/";
51 $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])?)?)?$/";
52 /*
53 Configure regular expression match for Specific Post/Page Access Item Numbers ( all elements required here ).
54 */
55 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["sp_access_item_number_regex"] = "/^(sp)(?:(?:\:([1-9][0-9,]*))(?:\:([1-9][0-9]*)))$/";
56 /*
57 Configure multibyte detection order when charset is unknown ( used by calls to `mb_convert_encoding()` ).
58 */
59 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["mb_detection_order"] = "UTF-8, ISO-8859-1, WINDOWS-1252, ASCII, JIS, EUC-JP, SJIS";
60 /*
61 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>
62 */
63 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["streaming_file_extns"] = array_unique (array ("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"));
64 /*
65 Configure directory and .htaccess for files protected by s2Member.
66 */
67 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"] = apply_filters ("ws_plugin__s2member_files_dir", dirname (dirname (__FILE__)) . "-files" . ((stripos (PHP_OS, "win") === 0 && (!function_exists ("apache_get_version") || apache_get_version () === false)) ? "/app_data" : ""));
68 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir_htaccess"] = dirname (__FILE__) . "/templates/cfg-files/s2member-files.php";
69 /*
70 Configure the directory for logs protected by s2Member.
71 */
72 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"] = apply_filters ("ws_plugin__s2member_logs_dir", dirname (dirname (__FILE__)) . "-logs" . ((stripos (PHP_OS, "win") === 0 && (!function_exists ("apache_get_version") || apache_get_version () === false)) ? "/app_data" : ""));
73 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir_htaccess"] = dirname (__FILE__) . "/templates/cfg-files/s2member-logs.php";
74 /*
75 Configure the global reCaptcha for ( www.s2-all-domains.com ). These public/private keys work on any installation.
76 */
77 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["recaptcha"] = array ("public_key" => "6LdxxcESAAAAANL7vrhz2glFIhmLGY58hXOhGkE0", "private_key" => "6LdxxcESAAAAAOlXATQTR75735n0eSIcOnp4GeNd", "lang" => _x ("en", "s2member-front recaptcha-lang-code", "s2member"));
78 /*
79 Configure the right menu options panel for s2Member.
80 */
81 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"] = array ("mlist" => true, "upsell-pro" => true, "installation" => false, "tools" => false, "videos" => true, "support" => true, "donations" => true);
82 /*
83 Check if s2Member has been configured *should be set after the first config via options panel*.
84 */
85 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["configured"] = get_option ("ws_plugin__s2member_configured");
86 /*
87 This is a special option cache that holds some additional information autoloaded into WordPress®.
88 */
89 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"] = get_option ("ws_plugin__s2member_cache");
90 /*
91 Configure checksum time for the syscon.inc.php file.
92 */
93 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["checksum"] = filemtime (__FILE__);
94 /*
95 Configure an array of pluggable functions handled by s2Member.
96 */
97 $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["pluggables"] = array ();
98 /*
99 Configure & validate all of the s2Member options; and set their defaults.
100 */
101 if (!function_exists ("ws_plugin__s2member_configure_options_and_their_defaults"))
102 {
103 /**
104 * Configures an options array for the s2Member plugin.
105 *
106 * **WARNING:** This is a system configuration function, please DO NOT EDIT this function directly.
107 * Instead, use the plugin options panel in WordPress® to override these settings.
108 *
109 * @package s2Member
110 * @since 3.0
111 *
112 * @param array $options Optional. An array of new options, to be merged with the defaults.
113 * @return array This merged array of options: ``$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]``
114 */
115 function ws_plugin__s2member_configure_options_and_their_defaults ($options = FALSE)
116 {
117 global $current_site, $current_blog;
118 /**/
119 $default_options["options_checksum"] = "";
120 $default_options["options_version"] = "1.0";
121 /**/
122 $default_options["gateway_debug_logs"] = "0";
123 /**/
124 $default_options["sec_encryption_key"] = "";
125 $default_options["sec_encryption_key_history"] = array ();
126 $default_options["s_badge_status_enabled"] = "0";
127 /**/
128 $default_options["max_ip_restriction"] = "5";
129 $default_options["max_ip_restriction_time"] = "3600";
130 $default_options["max_failed_login_attempts"] = "5";
131 /**/
132 $default_options["run_deactivation_routines"] = "0";
133 /**/
134 $default_options["custom_reg_fields"] = "";
135 $default_options["custom_reg_names"] = "1";
136 $default_options["custom_reg_display_name"] = "full";
137 $default_options["custom_reg_password"] = "0";
138 /**/
139 $default_options["custom_reg_opt_in"] = "1";
140 $default_options["custom_reg_opt_in_label"] = _x ("Yes, I want to receive updates via email.", "s2member-front", "s2member");
141 /**/
142 $default_options["custom_reg_auto_opt_outs"] = array ();
143 $default_options["custom_reg_auto_opt_out_transitions"] = "0";
144 /**/
145 $default_options["custom_reg_fields_4bp"] = array ();
146 $default_options["custom_reg_force_personal_emails"] = "";
147 /**/
148 $default_options["allow_subscribers_in"] = "0";
149 $default_options["force_admin_lockouts"] = "0";
150 $default_options["filter_wp_query"] = array ();
151 /**/
152 $default_options["mms_auto_patch"] = "1";
153 $default_options["mms_registration_file"] = "wp-login";
154 $default_options["mms_registration_grants"] = "none";
155 for ($n = 0, $v = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++, $v = $v + 5)
156 $default_options["mms_registration_blogs_level" . $n] = (string)$v;
157 /**/
158 $default_options["login_welcome_page"] = "";
159 $default_options["login_redirection_override"] = "";
160 $default_options["membership_options_page"] = "";
161 /**/
162 $default_options["login_reg_background_color"] = "FFFFFF";
163 $default_options["login_reg_background_image"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] . "/images/bg.png";
164 $default_options["login_reg_background_image_repeat"] = "repeat";
165 /**/
166 $default_options["login_reg_background_text_color"] = "000000";
167 $default_options["login_reg_background_text_shadow_color"] = "EEEEEE";
168 $default_options["login_reg_background_box_shadow_color"] = "EEEEEE";
169 /**/
170 $default_options["login_reg_logo_src"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"] . "/images/logo.png";
171 $default_options["login_reg_logo_src_width"] = "550";
172 $default_options["login_reg_logo_src_height"] = "100";
173 $default_options["login_reg_logo_url"] = home_url ("/");
174 $default_options["login_reg_logo_title"] = get_bloginfo ("name");
175 /**/
176 $default_options["login_reg_font_size"] = "12px";
177 $default_options["login_reg_font_family"] = "'Verdana', 'Arial', sans-serif";
178 $default_options["login_reg_font_field_size"] = "18px";
179 /**/
180 $default_options["login_reg_footer_design"] = "";
181 /**/
182 $default_options["reg_email_from_name"] = get_bloginfo ("name");
183 $default_options["reg_email_from_email"] = get_bloginfo ("admin_email");
184 $default_options["reg_email_support_link"] = "mailto:" . get_bloginfo ("admin_email");
185 /**/
186 $default_options["new_user_emails_enabled"] = "0";
187 /**/
188 $default_options["new_user_email_subject"] = sprintf (_x ("[%s] Username/Password", "s2member-front", "s2member"), get_bloginfo ("name"));
189 $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"));
190 /**/
191 $default_options["new_user_admin_email_recipients"] = get_bloginfo ("admin_email");
192 $default_options["new_user_admin_email_subject"] = sprintf (_x ("[%s] New User Registration", "s2member-front", "s2member"), get_bloginfo ("name"));
193 $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"));
194 /**/
195 $default_options["paypal_sandbox"] = "0";
196 $default_options["paypal_business"] = "";
197 $default_options["paypal_api_username"] = "";
198 $default_options["paypal_api_password"] = "";
199 $default_options["paypal_api_signature"] = "";
200 $default_options["paypal_identity_token"] = "";
201 $default_options["paypal_btn_encryption"] = "0";
202 /**/
203 $default_options["signup_tracking_codes"] = "";
204 $default_options["modification_tracking_codes"] = "";
205 $default_options["ccap_tracking_codes"] = "";
206 $default_options["sp_tracking_codes"] = "";
207 /**/
208 $default_options["signup_email_recipients"] = '"%%full_name%%" <%%payer_email%%>';
209 $default_options["signup_email_subject"] = _x ("Congratulations! ( your membership has been approved )", "s2member-front", "s2member");
210 $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"));
211 /**/
212 $default_options["sp_email_recipients"] = '"%%full_name%%" <%%payer_email%%>';
213 $default_options["sp_email_subject"] = _x ("Thank You! ( instructions for access )", "s2member-front", "s2member");
214 $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"));
215 /**/
216 $default_options["mailchimp_api_key"] = "";
217 /**/
218 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
219 $default_options["level" . $n . "_mailchimp_list_ids"] = "";
220 /**/
221 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
222 $default_options["level" . $n . "_aweber_list_ids"] = "";
223 /**/
224 $default_options["signup_notification_urls"] = "";
225 $default_options["registration_notification_urls"] = "";
226 $default_options["payment_notification_urls"] = "";
227 $default_options["modification_notification_urls"] = "";
228 $default_options["cancellation_notification_urls"] = "";
229 $default_options["eot_del_notification_urls"] = "";
230 $default_options["ref_rev_notification_urls"] = "";
231 $default_options["sp_sale_notification_urls"] = "";
232 $default_options["sp_ref_rev_notification_urls"] = "";
233 /**/
234 $default_options["signup_notification_recipients"] = "";
235 $default_options["registration_notification_recipients"] = "";
236 $default_options["payment_notification_recipients"] = "";
237 $default_options["modification_notification_recipients"] = "";
238 $default_options["cancellation_notification_recipients"] = "";
239 $default_options["eot_del_notification_recipients"] = "";
240 $default_options["ref_rev_notification_recipients"] = "";
241 $default_options["sp_sale_notification_recipients"] = "";
242 $default_options["sp_ref_rev_notification_recipients"] = "";
243 /**/
244 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++)
245 $default_options["level" . $n . "_label"] = (!empty ($l[$n])) ? $l[$n] : sprintf (_x ("Level %s Member", "s2member-front", "s2member"), $n);
246 /**/
247 $default_options["apply_label_translations"] = "0";
248 /**/
249 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
250 $default_options["level" . $n . "_file_downloads_allowed"] = "";
251 /**/
252 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
253 $default_options["level" . $n . "_file_downloads_allowed_days"] = "";
254 /**/
255 $default_options["file_download_limit_exceeded_page"] = "";
256 $default_options["file_download_inline_extensions"] = "";
257 $default_options["file_download_stream_extensions"] = "";
258 /**/
259 $default_options["amazon_s3_files_bucket"] = "";
260 $default_options["amazon_s3_files_access_key"] = "";
261 $default_options["amazon_s3_files_secret_key"] = "";
262 /**/
263 $default_options["amazon_cf_files_private_key"] = "";
264 $default_options["amazon_cf_files_private_key_id"] = "";
265 $default_options["amazon_cf_files_distros_access_id"] = "";
266 $default_options["amazon_cf_files_distros_s3_access_id"] = "";
267 $default_options["amazon_cf_files_distro_downloads_id"] = "";
268 $default_options["amazon_cf_files_distro_downloads_cname"] = "";
269 $default_options["amazon_cf_files_distro_downloads_dname"] = "";
270 $default_options["amazon_cf_files_distro_streaming_id"] = "";
271 $default_options["amazon_cf_files_distro_streaming_cname"] = "";
272 $default_options["amazon_cf_files_distro_streaming_dname"] = "";
273 $default_options["amazon_cf_files_distros_auto_config_status"] = "";
274 /**/
275 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
276 $default_options["level" . $n . "_ruris"] = "";
277 /**/
278 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
279 $default_options["level" . $n . "_catgs"] = "";
280 /**/
281 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
282 $default_options["level" . $n . "_ptags"] = "";
283 /**/
284 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
285 $default_options["level" . $n . "_posts"] = "";
286 /**/
287 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
288 $default_options["level" . $n . "_pages"] = "";
289 /**/
290 $default_options["specific_ids"] = "";
291 /**/
292 $default_options["triggers_immediate_eot"] = "refunds,reversals";
293 $default_options["membership_eot_behavior"] = "demote";
294 $default_options["eot_time_ext_behavior"] = "extend";
295 $default_options["auto_eot_system_enabled"] = "1";
296 /**/
297 $default_options["wp_footer_code"] = "";
298 /**/
299 $default_options = apply_filters ("ws_plugin__s2member_default_options", $default_options);
300 /**/
301 unset ($n, $v, $l); /* Unset/cleanup these working variables from the routines above. */
302 /*
303 Here they are merged. User options will overwrite some or all default values.
304 */
305 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] = array_merge ($default_options, (($options !== false) ? (array)$options : (array)get_option ("ws_plugin__s2member_options")));
306 /**/
307 /* Back compatibility for `filter_wp_query`. Changed in v110912 to array. */
308 if (is_string ($_ov = &$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"]))
309 $_ov = (!$_ov || $_ov === "none") ? $default_options["filter_wp_query"] : array_unique (preg_split ("/[;,\r\n\t\s ]+/", $_ov));
310 /**/
311 /* Backward compatibility for old logo image width of 500 pixels. Changed in v110604. */
312 if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src"] === $default_options["login_reg_logo_src"])
313 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src_width"] = $default_options["login_reg_logo_src_width"];
314 /**/
315 /* Backward compatibility for PayPal® API Credentials. Starting with v3.5+, this info is stored by the free version of s2Member. */
316 if (empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_username"]) && !empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_username"]))
317 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_username"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_username"];
318 /**/
319 if (empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"]) && !empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_password"]))
320 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_password"];
321 /**/
322 if (empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"]) && !empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_signature"]))
323 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_paypal_api_signature"];
324 /*
325 This builds an MD5 checksum for the full array of options. This also includes the config checksum and the current set of default options.
326 */
327 $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))));
328 /*
329 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.
330 */
331 if ($options !== false || ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_checksum"] !== $checksum && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] !== $default_options))
332 {
333 foreach ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"] as $key => &$value)
334 {
335 if (!isset ($default_options[$key]) && !preg_match ("/^pro_/", $key))
336 unset($GLOBALS["WS_PLUGIN__"]["s2member"]["o"][$key]);
337 /**/
338 else if ($key === "options_checksum" && (!is_string ($value) || !strlen ($value)))
339 $value = $default_options[$key];
340 /**/
341 else if ($key === "options_version" && (!is_string ($value) || !is_numeric ($value)))
342 $value = $default_options[$key];
343 /**/
344 else if ($key === "gateway_debug_logs" && (!is_string ($value) || !is_numeric ($value)))
345 $value = $default_options[$key];
346 /**/
347 else if ($key === "sec_encryption_key" && (!is_string ($value) || !strlen ($value)))
348 $value = $default_options[$key];
349 /**/
350 else if ($key === "sec_encryption_key_history" && (!is_array ($value) || empty ($value)))
351 $value = $default_options[$key];
352 /**/
353 else if ($key === "s_badge_status_enabled" && (!is_string ($value) || !is_numeric ($value)))
354 $value = $default_options[$key];
355 /**/
356 else if ($key === "max_ip_restriction" && (!is_string ($value) || !is_numeric ($value) || $value < 0 || $value > 100))
357 $value = $default_options[$key];
358 /**/
359 else if ($key === "max_ip_restriction_time" && (!is_string ($value) || !is_numeric ($value) || $value < 900 || $value > 31556926))
360 $value = $default_options[$key];
361 /**/
362 else if ($key === "max_failed_login_attempts" && (!is_string ($value) || !is_numeric ($value) || $value < 0 || $value > 100))
363 $value = $default_options[$key];
364 /**/
365 else if ($key === "run_deactivation_routines" && (!is_string ($value) || !is_numeric ($value)))
366 $value = $default_options[$key];
367 /**/
368 else if ($key === "custom_reg_fields" && (!is_string ($value) || !strlen ($value)))
369 $value = $default_options[$key];
370 /**/
371 else if (preg_match ("/^custom_reg_(names|password|opt_in|auto_opt_out_transitions)$/", $key) && (!is_string ($value) || !is_numeric ($value)))
372 $value = $default_options[$key];
373 /**/
374 else if ($key === "custom_reg_display_name" && (!is_string ($value) || !preg_match ("/^(full|first|last|login|0)$/", $value)))
375 $value = $default_options[$key];
376 /**/
377 else if ($key === "custom_reg_opt_in_label" && (!is_string ($value) || !strlen ($value)))
378 $value = $default_options[$key];
379 /**/
380 else if ($key === "custom_reg_auto_opt_outs" && (!is_array ($value) || empty ($value)))
381 $value = $default_options[$key];
382 /**/
383 else if ($key === "custom_reg_fields_4bp" && (!is_array ($value) || empty ($value)))
384 $value = $default_options[$key];
385 /**/
386 else if ($key === "custom_reg_force_personal_emails" && (!is_string ($value) || !strlen ($value = preg_replace ("/\s+/", "", $value))))
387 $value = $default_options[$key];
388 /**/
389 else if ($key === "allow_subscribers_in" && (!is_string ($value) || !is_numeric ($value)))
390 $value = $default_options[$key];
391 /**/
392 else if ($key === "mms_auto_patch" && (!is_string ($value) || !is_numeric ($value)))
393 $value = $default_options[$key];
394 /**/
395 else if ($key === "mms_registration_file" && (!is_string ($value) || !preg_match ("/^(wp-login|wp-signup)$/", $value)))
396 $value = $default_options[$key];
397 /**/
398 else if ($key === "mms_registration_grants" && (!is_string ($value) || !preg_match ("/^(none|user|all)$/", $value)))
399 $value = $default_options[$key];
400 /**/
401 else if (preg_match ("/^mms_registration_blogs_level[0-9]+$/", $key) && (!is_string ($value) || !is_numeric ($value) || $value < 0))
402 $value = $default_options[$key];
403 /**/
404 else if ($key === "force_admin_lockouts" && (!is_string ($value) || !is_numeric ($value)))
405 $value = $default_options[$key];
406 /**/
407 else if ($key === "filter_wp_query" && !is_array ($value)) /* Array CAN be empty. */
408 $value = $default_options[$key];
409 /**/
410 else if ($key === "login_welcome_page" && (!is_string ($value) || !is_numeric ($value)))
411 $value = $default_options[$key];
412 /**/
413 else if ($key === "login_redirection_override" && (!is_string ($value) || !strlen ($value)))
414 $value = $default_options[$key];
415 /**/
416 else if ($key === "membership_options_page" && (!is_string ($value) || !is_numeric ($value)))
417 $value = $default_options[$key];
418 /**/
419 else if ($key === "login_reg_background_image" && !is_string ($value)) /* This is optional. */
420 $value = $default_options[$key];
421 /**/
422 else if ($key === "login_reg_background_image_repeat" && (!is_string ($value) || !preg_match ("/^(repeat|repeat-x|repeat-y|no-repeat)$/", $value)))
423 $value = $default_options[$key];
424 /**/
425 else if (preg_match ("/^login_reg_(background|logo|font|footer)_/", $key) && !preg_match ("/background_image/", $key) && (!is_string ($value) || !strlen ($value)))
426 $value = $default_options[$key];
427 /**/
428 else if (preg_match ("/^reg_email_(from_name|from_email|support_link)$/", $key) && (!is_string ($value) || !strlen ($value)))
429 $value = $default_options[$key];
430 /**/
431 else if ($key === "new_user_emails_enabled" && (!is_string ($value) || !is_numeric ($value)))
432 $value = $default_options[$key];
433 /**/
434 else if (preg_match ("/^new_user_email_(subject|message)$/", $key) && (!is_string ($value) || !strlen ($value)))
435 $value = $default_options[$key];
436 /**/
437 else if (preg_match ("/^new_user_admin_email_(recipients|subject|message)$/", $key) && (!is_string ($value) || !strlen ($value)))
438 $value = $default_options[$key];
439 /**/
440 else if ($key === "paypal_sandbox" && (!is_string ($value) || !is_numeric ($value)))
441 $value = $default_options[$key];
442 /**/
443 else if (preg_match ("/^paypal_(business|api_username|api_password|api_signature|identity_token)$/", $key) && (!is_string ($value) || !strlen ($value)))
444 $value = $default_options[$key];
445 /**/
446 else if ($key === "paypal_btn_encryption" && (!is_string ($value) || !is_numeric ($value)))
447 $value = $default_options[$key];
448 /**/
449 else if (preg_match ("/^(signup|modification|ccap|sp)_tracking_codes$/", $key) && (!is_string ($value) || !strlen ($value)))
450 $value = $default_options[$key];
451 /**/
452 else if (preg_match ("/^(signup|sp)_email_recipients$/", $key) && !is_string ($value)) /* Can be empty. */
453 $value = $default_options[$key];
454 /**/
455 else if (preg_match ("/^(signup|sp)_email_(subject|message)$/", $key) && (!is_string ($value) || !strlen ($value)))
456 $value = $default_options[$key];
457 /**/
458 else if ($key === "mailchimp_api_key" && (!is_string ($value) || !strlen ($value)))
459 $value = $default_options[$key];
460 /**/
461 else if (preg_match ("/^level[0-9]+_mailchimp_list_ids$/", $key) && (!is_string ($value) || !strlen ($value = preg_replace ("/[\r\n\t]+/", "", $value))))
462 $value = $default_options[$key];
463 /**/
464 else if (preg_match ("/^level[0-9]+_aweber_list_ids$/", $key) && (!is_string ($value) || !strlen ($value = preg_replace ("/\s+/", "", $value))))
465 $value = $default_options[$key];
466 /**/
467 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)))
468 $value = $default_options[$key];
469 /**/
470 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)))
471 $value = $default_options[$key];
472 /**/
473 else if (preg_match ("/^level[0-9]+_label$/", $key) && (!is_string ($value) || !strlen ($value)))
474 $value = $default_options[$key];
475 /**/
476 else if ($key === "apply_label_translations" && (!is_string ($value) || !is_numeric ($value)))
477 $value = $default_options[$key];
478 /**/
479 else if (preg_match ("/^level[0-9]+_file_downloads_allowed$/", $key) && (!is_string ($value) || !is_numeric ($value) || $value < 0))
480 $value = $default_options[$key];
481 /**/
482 else if (preg_match ("/^level[0-9]+_file_downloads_allowed_days$/", $key) && (!is_string ($value) || !is_numeric ($value) || $value < 0))
483 $value = $default_options[$key];
484 /**/
485 else if ($key === "file_download_limit_exceeded_page" && (!is_string ($value) || !is_numeric ($value)))
486 $value = $default_options[$key];
487 /**/
488 else if (preg_match ("/^file_download_(inline|stream)_extensions$/", $key) && (!is_string ($value) || !($value = strtolower (preg_replace ("/\s+/", "", $value)))))
489 $value = $default_options[$key];
490 /**/
491 else if (preg_match ("/^amazon_(s3|cf)_files_/", $key) && (!is_string ($value) || !strlen ($value)))
492 $value = $default_options[$key];
493 /**/
494 else if (preg_match ("/^level[0-9]+_ruris$/", $key) && (!is_string ($value) || !strlen ($value)))
495 $value = $default_options[$key];
496 /**/
497 else if (preg_match ("/^level[0-9]+_catgs$/", $key) && (!is_string ($value) || !($value = (($value === "all") ? $value : trim (preg_replace ("/[^0-9,]/", "", $value), ",")))))
498 $value = $default_options[$key];
499 /**/
500 else if (preg_match ("/^level[0-9]+_ptags$/", $key) && (!is_string ($value) || !($value = (($value === "all") ? $value : trim (preg_replace ("/( +)/", " ", trim (preg_replace ("/( *),( *)/", ",", $value))), ",")))))
501 $value = $default_options[$key];
502 /**/
503 else if (preg_match ("/^level[0-9]+_posts$/", $key) && (!is_string ($value) || !($value = (($value === "all") ? $value : trim (preg_replace ("/[^0-9,]/", "", $value), ",")))))
504 $value = $default_options[$key];
505 /**/
506 else if (preg_match ("/^level[0-9]+_pages$/", $key) && (!is_string ($value) || !($value = (($value === "all") ? $value : trim (preg_replace ("/[^0-9,]/", "", $value), ",")))))
507 $value = $default_options[$key];
508 /**/
509 else if ($key === "specific_ids" && (!is_string ($value) || !($value = trim (preg_replace ("/[^0-9,]/", "", $value), ","))))
510 $value = $default_options[$key];
511 /**/
512 else if ($key === "triggers_immediate_eot" && (!is_string ($value) || !preg_match ("/^(none|refunds|reversals|refunds,reversals)$/", $value)))
513 $value = $default_options[$key];
514 /**/
515 else if ($key === "membership_eot_behavior" && (!is_string ($value) || !preg_match ("/^(demote|delete)$/", $value)))
516 $value = $default_options[$key];
517 /**/
518 else if ($key === "eot_time_ext_behavior" && (!is_string ($value) || !preg_match ("/^(extend|reset)$/", $value)))
519 $value = $default_options[$key];
520 /**/
521 else if ($key === "auto_eot_system_enabled" && (!is_string ($value) || !is_numeric ($value)))
522 $value = $default_options[$key];
523 /**/
524 else if ($key === "wp_footer_code" && (!is_string ($value) || !strlen ($value)))
525 $value = $default_options[$key];
526 }
527 /**/
528 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"]))
529 {
530 array_unshift ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], $options["sec_encryption_key"]);
531 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"] = array_slice ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"], 0, 10);
532 }
533 /**/
534 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"] = apply_filters_ref_array ("ws_plugin__s2member_options_before_checksum", array (&$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]));
535 /**/
536 $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_checksum"] = md5 ($checksum_prefix . serialize (array_merge ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"], array ("options_checksum" => 0))));
537 }
538 /**/
539 return apply_filters_ref_array ("ws_plugin__s2member_options", array (&$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]));
540 }
541 }
542 ?>