latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

About: Jacob Hicks

Sorry, I've not written a description yet. I'll get to it soon!


Topics I'm Subscribed To

Viewing 4 topics - 1 through 4 (of 4 total)
Topic Count Last Reply
import/export of users and custom fields

By:  Wayne Hedlund in: Community Forum

voices: 4
replies: 4

4 years ago  Carl Carvalho

Increase The 250 Row CSV Export Limit

By:  Jacob Hicks in: Community Forum

voices: 2
replies: 1

4 years, 1 month ago  Cristián Lávaque

CSV export format

By:  Jacob Hicks in: Community Forum

voices: 4
replies: 11

4 years, 2 months ago  Cristián Lávaque

Where exactly to start?

By:  Bruno in: Community Forum

voices: 3
replies: 2

4 years, 2 months ago  Cristián Lávaque

Viewing 4 topics - 1 through 4 (of 4 total)

Topics I've Started

Viewing 2 topics - 1 through 2 (of 2 total)
Topic Count Last Reply
Increase The 250 Row CSV Export Limit

By:  Jacob Hicks in: Community Forum

voices: 2
replies: 1

4 years, 1 month ago  Cristián Lávaque

CSV export format

By:  Jacob Hicks in: Community Forum

voices: 4
replies: 11

4 years, 2 months ago  Cristián Lávaque

Viewing 2 topics - 1 through 2 (of 2 total)

My Latest Replies (From Various Topics)

Viewing 5 replies - 1 through 5 (of 5 total)
Author Replies
Author Replies
Posted: Tuesday Dec 18th, 2012 at 1:30 pm #34956
Jacob Hicks
Username: NAOCS

Wayne,
Do you still need help with this issue? I had the same problem and coded a hack solution to export all the fields into a standard CSV with header rows (Like S2Member should have configured it) Maybe I can help you fix it. Let me know

-Jacob

Posted: Friday Oct 26th, 2012 at 1:28 pm #29836
Jacob Hicks
Username: NAOCS

Raam,
I’m only trying to change it to display properly on the exported CSV file. I have a client that wants his member level to display in the CSV file instead of S2member_level1. I can change it to display correctly in the WP Dashboard area but it does not update the labels for the CSV export fie. Any suggestions would really help asap. He is getting impatience.

Thank You,
Jacob

Posted: Friday Oct 26th, 2012 at 9:52 am #29785
Jacob Hicks
Username: NAOCS

Cristian,
I got the csv export figured out via some custom coding. The only thing I need now is to rename the S2member levels on the database level. My CSV export file displays “Subscriber” & “S2Member_Level1” under user roles instead of displaying my custom Label. Any suggestions on how to rename these membership levels so that it exports that way on the CSV?

Thanks,
Jacob

Posted: Wednesday Oct 24th, 2012 at 6:58 am #29490
Jacob Hicks
Username: NAOCS

Cristian,

I used the script from the thread you posted and keep getting an error in the code:

Fatal error: Call to undefined method c_ws_plugin__s2member_pro_exports_in::export_users() in /home/content/96/9493196/html/naocs/wp-content/plugins/s2member-pro/includes/classes/exports.inc.php on line 60

Here is the script I am using with no luck:

<?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.*/
                                  
                                  
                                  
                                  
                                          $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"; 
     
                                  /**/
                                  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) . '",';
                                                          /**/
                                                          
                                                              foreach ($cfields as $cfield)
        $line .= '"' . (isset($custom_field[$cfield['id']]) ? c_ws_plugin__s2member_utils_strings::esc_dq(maybe_serialize($custom_field[$cfield['id']])) : '') . '",';
      
                                                          
                                                             
                                                             
                                                             
                                                             /*
                                                             //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);
                         }
                   }
             }
       }
    ?>
Posted: Wednesday Oct 17th, 2012 at 10:59 am #28710
Jacob Hicks
Username: NAOCS

Cristian,
Thanks for the reply.
Do you know of a certain instance where someone has customized the export code to successfully export in standard csv format and do you know if it was a straight forward process to edit the code?

Viewing 5 replies - 1 through 5 (of 5 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.