PriMoThemes — now s2Member® (official notice)
This is now a very OLD forum system. It's in READ-ONLY mode.
All community interaction now occurs at WP Sharks™. See: new forums @ WP Sharks™
(array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true)
<?php
/**
* Handles User Export requests ( innner processing routines ).
*
* Copyright: © 2009-2011
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
* ( coded in the USA )
*
* This WordPress® plugin ( s2Member Pro ) is comprised of two parts:
*
* o (1) Its PHP code is licensed under the GPL license, as is WordPress®.
* You should have received a copy of the GNU General Public License,
* along with this software. In the main directory, see: /licensing/
* If not, see: {@link http://www.gnu.org/licenses/}.
*
* o (2) All other parts of ( s2Member Pro ); including, but not limited to:
* the CSS code, some JavaScript code, images, and design;
* are licensed according to the license purchased.
* See: {@link http://www.s2member.com/prices/}
*
* Unless you have our prior written consent, you must NOT directly or indirectly license,
* sub-license, sell, resell, or provide for free; part (2) of the s2Member Pro Module;
* or make an offer to do any of these things. All of these things are strictly
* prohibited with part (2) of the s2Member Pro Module.
*
* Your purchase of s2Member Pro includes free lifetime upgrades via s2Member.com
* ( i.e. new features, bug fixes, updates, improvements ); along with full access
* to our video tutorial library: {@link http://www.s2member.com/videos/}
*
* @package s2Member\User_Exports
* @since 1.5
*/
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
exit ("Do not access this file directly.");
/**/
if (!class_exists ("c_ws_plugin__s2member_pro_exports_in"))
{
/**
* Handles User Export requests ( innner processing routines ).
*
* @package s2Member\User_Exports
* @since 1.5
*/
class c_ws_plugin__s2member_pro_exports_in
{
/**
* Handles the exportation of Users/Members.
*
* @package s2Member\User_Exports
* @since 1.5
*
* @attaches-to ``add_action("init");``
*
* @return null Or exits script execution after issuing file download prompt with CSV file.
*/
public static function export ()
{
if (!empty ($_POST["ws_plugin__s2member_pro_export"]) && ($nonce = $_POST["ws_plugin__s2member_pro_export"]) && wp_verify_nonce ($nonce, "ws-plugin--s2member-pro-export") && current_user_can ("create_users"))
{
global $wpdb; /* Global database object reference. */
global $current_site, $current_blog; /* Multisite Networking. */
/**/
@set_time_limit (0); /* Make time for processing. */
@ini_set ("memory_limit", "256M"); /* RAM. */
/**/
$format = !empty ($_POST["ws_plugin__s2member_pro_export_format"]) ? $_POST["ws_plugin__s2member_pro_export_format"] : "";
$start = !empty ($_POST["ws_plugin__s2member_pro_export_start"]) ? (int)$_POST["ws_plugin__s2member_pro_export_start"] : 1;
/**/
$start = ($start >= 1) ? $start : 1; /* Must be 1 or higher. */
$sql_s = ($start === 1) ? 0 : $start; /* 1 should be 0. */
/**/
$export = ""; /* Initialize the export file variable. */
/**/
$s2map = array ( /* Map s2Member fields. */
"custom" => $wpdb->prefix . "s2member_custom",/**/
"subscr_id" => $wpdb->prefix . "s2member_subscr_id",/**/
"subscr_gateway" => $wpdb->prefix . "s2member_subscr_gateway",/**/
"auto_eot_time" => $wpdb->prefix . "s2member_auto_eot_time",/**/
"last_payment_time" => $wpdb->prefix . "s2member_last_payment_time",/**/
"paid_registration_times" => $wpdb->prefix . "s2member_paid_registration_times",/**/
"custom_fields" => $wpdb->prefix . "s2member_custom_fields");
/**/
if (is_array ($_users = $wpdb->get_results ("SELECT `" . $wpdb->users . "`.`ID` FROM `" . $wpdb->users . "`, `" . $wpdb->usermeta . "` WHERE `" . $wpdb->users . "`.`ID` = `" . $wpdb->usermeta . "`.`user_id` AND `" . $wpdb->usermeta . "`.`meta_key` = '" . esc_sql ($wpdb->prefix . "capabilities") . "' LIMIT " . $sql_s . ", 250")))
{
if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ())
$export .= '"ID","Username","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"' . "\n";
else /* Otherwise, we use the standardized format for exportation.*/
// Start Modification to labels
$s2_customFieldLabel_array = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
$i = 0;
foreach ($s2_customFieldLabel_array as $field) {
ksort ($s2_customFieldLabel_array);
if(i===0){
$cfLabel .= "\"" . $field['id'] . "\"";
}else{
$cfLabel .= ",\"" . $field['id'] . "\"";
}
$i++;
}
// End Modification to labels - $cfLabel is called below
$export .= '"ID","Username","Password","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"' . $cfLabel . "\n";
/**/
foreach ($_users as $_user) /* Go through each User/Member in this result set. */
{
if (is_object ($user = new WP_User ($_user->ID)) && $user->ID)
{
$custom_capabilities = ""; /* Reset each time. */
/**/
foreach ($user->allcaps as $cap => $cap_enabled)
if (preg_match ("/^access_s2member_ccap_/", $cap))
if ($cap = preg_replace ("/^access_s2member_ccap_/", "", $cap))
$custom_capabilities .= "," . $cap;
/**/
$custom_capabilities = trim ($custom_capabilities, ",");
/**/
$custom = (isset ($user->$s2map["custom"])) ? $user->$s2map["custom"] : "";
$subscr_id = (isset ($user->$s2map["subscr_id"])) ? $user->$s2map["subscr_id"] : "";
$subscr_gateway = (isset ($user->$s2map["subscr_gateway"])) ? $user->$s2map["subscr_gateway"] : "";
/**/
$auto_eot_time = (isset ($user->$s2map["auto_eot_time"])) ? $user->$s2map["auto_eot_time"] : "";
$last_payment_time = (isset ($user->$s2map["last_payment_time"])) ? $user->$s2map["last_payment_time"] : "";
$paid_registration_times = (isset ($user->$s2map["paid_registration_times"])) ? $user->$s2map["paid_registration_times"] : "";
$custom_fields = (isset ($user->$s2map["custom_fields"]) && is_array ($user->$s2map["custom_fields"])) ? $user->$s2map["custom_fields"] : array ();
/**/
$paid_registration_date = ($paid_registration_times["level"]) ? date ("m/d/Y", $paid_registration_times["level"]) : "";
$paid_registration_times = (is_array ($paid_registration_times) && !empty ($paid_registration_times)) ? serialize ($paid_registration_times) : "";
$registration_date = ($user->user_registered) ? date ("m/d/Y", strtotime ($user->user_registered)) : "";
$last_payment_date = ($last_payment_time) ? date ("m/d/Y", $last_payment_time) : "";
$auto_eot_date = ($auto_eot_time) ? date ("m/d/Y", $auto_eot_time) : "";
/**/
ksort ($custom_fields); /* Make sure Custom Fields are always in the same order.
/* This provides clarity/uniformity in the export file. */
/**/
if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ())
{
if ($format === "readable") /* Human readable format; easier for some. */
{
$line = '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->ID) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_login) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->first_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->last_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->display_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_email) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_url) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq (reset ($user->roles)) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_capabilities) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($paid_registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($last_payment_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($auto_eot_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_id) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_gateway) . '",';
/**/
foreach ($custom_fields as $custom_field_var => $custom_field_value)
{
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_field_var) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq /* Implode array? */
(implode ("|", (array)$custom_field_value)) . '",';
}
}
else /* Otherwise, we can just use the default re-importation format. */
{
$line = '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->ID) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_login) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->first_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->last_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->display_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_email) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_url) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq (reset ($user->roles)) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_capabilities) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($paid_registration_times) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($last_payment_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($auto_eot_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_id) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_gateway) . '",';
/**/
foreach ($custom_fields as $custom_field_var => $custom_field_value)
{
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_field_var) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq /* Serialize? */
(maybe_serialize ($custom_field_value)) . '",';
}
}
}
else /* Otherwise, we use the standardized formats for exportation.*/
{
if ($format === "readable") /* Human readable format; easier for some. */
{
$line = '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->ID) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_login) . '",';
$line .= '"",'; /* The Password field is left blank on export. */
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->first_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->last_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->display_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_email) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_url) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq (reset ($user->roles)) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_capabilities) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($paid_registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($last_payment_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($auto_eot_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_id) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_gateway) . '",';
/**/
$return = array();
$user = get_user_option('s2member_custom_fields', $user->ID);
$s2_customFieldValue_array = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
foreach ($s2_customFieldValue_array as $field) {
$return[$field['id']]['value'] = $user[$field['id']];
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($return[$field['id']]['value']) . '",';
}
/* Original Script
foreach ($custom_fields as $custom_field_var => $custom_field_value)
{
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_field_var) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq // Implode array?
(implode ("|", (array)$custom_field_value)) . '",';
}*/
}
else /* Otherwise, we can just use the default re-importation format. */
{
$line = '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->ID) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_login) . '",';
$line .= '"",'; /* The Password field is left blank on export. */
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->first_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->last_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->display_name) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_email) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($user->user_url) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq (reset ($user->roles)) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_capabilities) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($registration_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($paid_registration_times) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($last_payment_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($auto_eot_date) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_id) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($subscr_gateway) . '",';
/**/
// Start Modification to values
$return = array();
$user = get_user_option('s2member_custom_fields', $user->ID);
$s2_cf_array = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
foreach ($s2_cf_array as $field) {
$return[$field['id']]['value'] = $user[$field['id']];
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($return[$field['id']]['value']) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq // Serialize?
(maybe_serialize ($custom_field_value)) . '",';
}
// End Modification to values
/*
//Original Code:
foreach ($custom_fields as $custom_field_var => $custom_field_value)
{
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($custom_field_var) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq // Serialize?
(maybe_serialize ($custom_field_value)) . '",';
}
*/
}
}
/**/
$export .= trim ($line, " \r\n\t\0\x0B,") . "\n";
}
}
}
/**/
@ini_set ("zlib.output_compression", 0);
/**/
header ("Accept-Ranges: none");
header ("Content-Encoding: none");
header ("Content-Type: text/csv; charset=utf-8");
header ("Content-Length: " . strlen ($export));
header ("Expires: " . gmdate ("D, d M Y H:i:s", strtotime ("-1 week")) . " GMT");
header ("Last-Modified: " . gmdate ("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate, max-age=0");
header ("Cache-Control: post-check=0, pre-check=0", false);
header ("Pragma: no-cache");
/**/
header ('Content-Disposition: attachment; filename="export-' . $start . '-' . ($start + 249) . '.csv"');
/**/
eval ('while (@ob_end_clean ());'); /* Clean output buffers. */
/**/
exit ($export);
}
}
}
}
?>
// Start Modification to labels
$s2_customFieldLabel_array = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
$i = 0;
foreach ($s2_customFieldLabel_array as $field) {
ksort ($s2_customFieldLabel_array);
if(i===0){
$cfLabel .= "\"" . $field['id'] . "\"";
}else{
$cfLabel .= ",\"" . $field['id'] . "\"";
}
$i++;
}
// End Modification to labels - $cfLabel is called below
$export .= '"ID","Username","Password","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"' . $cfLabel . "\n";
$export .= '"ID","Username","Password","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"';
$cfields = ksort((array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true));
foreach ($cfields as $cfield)
$export .= ',"' . $cfield['id'] . '"';
$export .= "\n";
// Start Modification to values
$return = array();
$user = get_user_option('s2member_custom_fields', $user->ID);
$s2_cf_array = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
foreach ($s2_cf_array as $field) {
$return[$field['id']]['value'] = $user[$field['id']];
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq ($return[$field['id']]['value']) . '",';
$line .= '"' . c_ws_plugin__s2member_utils_strings::esc_dq // Serialize?
(maybe_serialize ($custom_field_value)) . '",';
}
// End Modification to values
foreach ($cfields as $cfield)
$line .= '"' . (isset($custom_field[$cfield['id']]) ? c_ws_plugin__s2member_utils_strings::esc_dq(maybe_serialize($custom_field[$cfield['id']])) : '') . '",';
$export .= '"ID","Username","Password","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"';
$cfields = ksort((array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true));
foreach ($cfields as $cfield)
$export .= ',"' . $cfield['id'] . '"';
$export .= "\n";
$export .= '"ID","Username","Password","First Name","Last Name","Display Name","Email","Website","Role","Custom Capabilities","Registration Date","First Payment Date","Last Payment Date","Auto-EOT Date","Custom Value","Paid Subscr. ID","Paid Subscr. Gateway"';
$cfields = (array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true);
ksort($cfields);
foreach ($cfields as $cfield)
$export .= ',"' . $cfield['id'] . '"';
$export .= "\n";
Users browsing this forum: Exabot [Bot], Google [Bot] and 1 guest