Community Support Forums — WordPress® ( Users Helping Users ) — 2011-07-21T13:27:09-05:00 http://www.primothemes.com/forums/feed.php?f=4&t=14093 2011-07-21T13:27:09-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28828#p28828 <![CDATA[Re: Format of the export file]]> Statistics: Posted by nashvillegeek — July 21st, 2011, 1:27 pm


]]>
2011-07-21T13:21:08-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28826#p28826 <![CDATA[Re: Format of the export file]]>

Well, I've got a bit of practice compacting code and I particularly like doing it with other people's code more than with writing my own from scratch. Glad I could help you.

This can't really be applied to your s2hacks.php file because it's not using any hooks... Just make sure you keep a copy of the code outside the s2member-pro directory so it's not replaced with the new copy and you can re-apply the change. Hopefully it won't be many more releases before something like this gets added to the plugin.

Statistics: Posted by Cristián Lávaque — July 21st, 2011, 1:21 pm


]]>
2011-07-21T09:53:20-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28819#p28819 <![CDATA[Re: Format of the export file]]>
Any thoughts on dropping the script into the s2-hacks.php to avoid having to re-upload when updates are applied?

Statistics: Posted by nashvillegeek — July 21st, 2011, 9:53 am


]]>
2011-07-21T09:42:26-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28818#p28818 <![CDATA[Re: Format of the export file]]> Statistics: Posted by Cristián Lávaque — July 21st, 2011, 9:42 am


]]>
2011-07-21T06:56:01-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28803#p28803 <![CDATA[Re: Format of the export file]]>
Code:
    $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";
      


I had to move the ksort out of the $cfields declaration, as it was throwing an error. I changed it to this and it works fine:

Code:
$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"; 


Thanks for the input. I would definitely be interested to know if there is a way to avoid reapplying after each update.

Statistics: Posted by nashvillegeek — July 21st, 2011, 6:56 am


]]>
2011-07-21T06:32:07-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28802#p28802 <![CDATA[Re: Format of the export file]]> Statistics: Posted by nashvillegeek — July 21st, 2011, 6:32 am


]]>
2011-07-20T23:37:31-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28773#p28773 <![CDATA[Re: Format of the export file]]>

Code:
// 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";
 


In that part ksort should be before the foreach and $i in the condition is missing the $. The block could probably be written like this:

Code:
$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";
 


And in this other part:

Code:
// 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
 


You're assuming that the $user will have every custom field, which isn't true most of the time. You're not using maybe_serialize with the custom field values, some may be arrays. Also, the second $line concatenation was left from the original code but shouldn't be there, you don't even have $custom_field_value defined. The block could probably be written like this:

Code:
foreach ($cfields as $cfield)
    $line .= '"' . (isset($custom_field[$cfield['id']]) ? c_ws_plugin__s2member_utils_strings::esc_dq(maybe_serialize($custom_field[$cfield['id']])) : '') . '",';
  


Let me know if that works and helps you. :)

And remember you'll have to re-apply these after every s2Member Pro update.

Statistics: Posted by Cristián Lávaque — July 20th, 2011, 11:37 pm


]]>
2011-07-20T14:52:14-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28738#p28738 <![CDATA[Re: Format of the export file]]> Statistics: Posted by nashvillegeek — July 20th, 2011, 2:52 pm


]]>
2011-07-20T14:33:20-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28735#p28735 <![CDATA[Re: Format of the export file]]>
Here is the code:

Code:
<?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);
                     }
               }
         }
   }
?>


Let me know if I can tighten it up a bit. Even better, would be an option added to the export options for this format.

Statistics: Posted by nashvillegeek — July 20th, 2011, 2:33 pm


]]>
2011-07-14T19:06:31-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28391#p28391 <![CDATA[Re: Format of the export file]]>
Well, you could customize s2Member's export method to include every custom field for every user, in the column-per-field format. /wp-content/plugins/s2member-pro/includes/classes/exports-in.inc.php

Here's how you can get all the custom fields you defined:
Code:
(array)json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], true)


And an example of it in use: viewtopic.php?f=4&t=6546&p=16582#p16582

I hope that helps. :)

Statistics: Posted by Cristián Lávaque — July 14th, 2011, 7:06 pm


]]>
2011-07-14T12:35:05-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28380#p28380 <![CDATA[Re: Format of the export file]]>
Any idea on a time frame for the export format update if it is on the docket? I know nothing about creating csv files or how to re-configure the script already in place. My client needs the format to be more uniform for import into other applications, but the custom fields setup make it difficult.

Statistics: Posted by nashvillegeek — July 14th, 2011, 12:35 pm


]]>
2011-07-13T01:31:50-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28237#p28237 <![CDATA[Re: Format of the export file]]>
Jason is looking at the possibility of having a column per custom field, instead of working with field-value pairs as it is at the moment.

Statistics: Posted by Cristián Lávaque — July 13th, 2011, 1:31 am


]]>
2011-07-12T11:37:48-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14093&p=28191#p28191 <![CDATA[Format of the export file]]>
Has anyone attempted to change to format of the custom fields in the member export file? My client needs the field key (i.e. 'address','mobile', etc) to appear in the first row with values in that column like the other wordpress key/values. This is necessary for import into other applications such as Salesforce and their local database.

Is this possible?

Also, is the solution for the custom fields cells shifting when empty to have a default entry in the custom field setup?

Thanks,
Scott

Statistics: Posted by nashvillegeek — July 12th, 2011, 11:37 am


]]>