# jc-importer/2.7.7/class/Common/Exporter/Mapper/UserMapper.php

Import WP – CSV &amp; XML Import Export for WordPress, version 2.7.7. 121 lines.

- Page: https://pluginprobe.com/plugins/jc-importer/2.7.7/code/class/Common/Exporter/Mapper/UserMapper.php
- Raw: https://pluginprobe.com/plugins/jc-importer/2.7.7/raw/class/Common/Exporter/Mapper/UserMapper.php
- Modified: 2023-03-09T15:06:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/jc-importer/2.7.7/code/class/Common/Exporter/Mapper/UserMapper.php#L10-L20`.

```php
<?php

namespace ImportWP\Common\Exporter\Mapper;

use ImportWP\Common\Exporter\MapperInterface;

class UserMapper extends AbstractMapper implements MapperInterface
{
    /**
     * @var \WP_User_Query
     */
    private $query;

    private function get_core_fields()
    {
        return array(
            'ID',
            'user_login',
            'user_nicename',
            'user_email',
            'user_url',
            'user_registered',
            'user_status',
            'display_name',
            'first_name',
            'last_name'
        );
    }

    public function get_fields()
    {
        /**
         * @var \WPDB
         */
        global $wpdb;

        $fields = [
            'key' => 'main',
            'label' => 'User',
            'loop' => true,
            'fields' => [],
            'children' => [
                'custom_fields' => [
                    'key' => 'custom_fields',
                    'label' => 'Custom Fields',
                    'loop' => true,
                    'loop_fields' => ['meta_key', 'meta_value'],
                    'fields' => [],
                    'children' => []
                ]
            ]

        ];

        $fields['fields'] = $this->get_core_fields();
        $fields['fields'][] = 'role';
        $fields['fields'][] = 'first_name';
        $fields['fields'][] = 'last_name';
        $fields['fields'][] = 'description';

        // user meta
        $meta_fields = $wpdb->get_col("SELECT DISTINCT meta_key FROM " . $wpdb->usermeta . " WHERE user_id IN (SELECT DISTINCT ID FROM " . $wpdb->users . " )");
        foreach ($meta_fields as $field) {

            if (in_array($field, ['first_name', 'last_name', 'description'])) {
                continue;
            }

            $fields['children']['custom_fields']['fields'][] = $field;
        }

        $fields['children']['custom_fields']['fields'] = apply_filters('iwp/exporter/user/custom_field_list', $fields['children']['custom_fields']['fields'], null);

        return $fields;
    }

    public function have_records($exporter_id)
    {
        $query_args = [];
        $query_args = apply_filters('iwp/exporter/user_query', $query_args);
        $query_args = apply_filters(sprintf('iwp/exporter/%d/user_query', $exporter_id), $query_args);

        $query_args = wp_parse_args($query_args, [
            'number' => -1
        ]);

        $this->query = new \WP_User_Query($query_args);

        return $this->found_records() > 0;
    }

    public function found_records()
    {
        return $this->query->get_total();
    }

    public function setup($i)
    {
        $user = $this->query->results[$i];
        $this->record = (array)$user->data;
        $this->record['custom_fields'] = get_user_meta($this->record['ID']);

        $userdata = get_userdata($this->record['ID']);
        $this->record['role'] = (array)$userdata->roles;

        foreach (['first_name', 'last_name', 'description'] as $field) {

            if (isset($this->record['custom_fields'][$field])) {

                $this->record[$field] = $this->record['custom_fields'][$field][0];
                unset($this->record['custom_fields'][$field]);
            } else {

                $this->record[$field] = '';
            }
        }

        return true;
    }
}

```
