PluginProbe
Import WP – CSV & XML Import Export for WordPress / 2.8.0
Import WP – CSV & XML Import Export for WordPress v2.8.0
2.15.1 2.15.0 2.14.24 2.14.23 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 2.9.1 All 144 releases
jc-importer / class / Common / Exporter / Mapper / UserMapper.php

UserMapper.php in Import WP – CSV & XML Import Export for WordPress 2.8.0, at class/Common/Exporter/Mapper/UserMapper.php

139 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ImportWP\Common\Exporter\Mapper;
4
5 use ImportWP\Common\Exporter\MapperInterface;
6
7 class UserMapper extends AbstractMapper implements MapperInterface
8 {
9 /**
10 * @var \WP_User_Query
11 */
12 private $query;
13
14 public function get_core_fields()
15 {
16 return array(
17 'ID',
18 'user_login',
19 'user_nicename',
20 'user_email',
21 'user_url',
22 'user_registered',
23 'user_status',
24 'display_name',
25 'first_name',
26 'last_name'
27 );
28 }
29
30 public function get_fields()
31 {
32 /**
33 * @var \WPDB
34 */
35 global $wpdb;
36
37 $fields = [
38 'key' => 'main',
39 'label' => 'User',
40 'loop' => true,
41 'fields' => [],
42 'children' => [
43 'custom_fields' => [
44 'key' => 'custom_fields',
45 'label' => 'Custom Fields',
46 'loop' => true,
47 'loop_fields' => ['meta_key', 'meta_value'],
48 'fields' => [],
49 'children' => []
50 ]
51 ]
52
53 ];
54
55 $fields['fields'] = $this->get_core_fields();
56 $fields['fields'][] = 'role';
57 $fields['fields'][] = 'first_name';
58 $fields['fields'][] = 'last_name';
59 $fields['fields'][] = 'description';
60
61 // user meta
62 $meta_fields = $wpdb->get_col("SELECT DISTINCT meta_key FROM " . $wpdb->usermeta . " WHERE user_id IN (SELECT DISTINCT ID FROM " . $wpdb->users . " )");
63 $custom_file_fields = apply_filters('iwp/exporter/user/custom_file_id_fields', []);
64 foreach ($meta_fields as $field) {
65
66 if (in_array($field, ['first_name', 'last_name', 'description'])) {
67 continue;
68 }
69
70 $fields['children']['custom_fields']['fields'][] = $field;
71
72 if (in_array($field, $custom_file_fields)) {
73 $fields['children']['custom_fields']['fields'][] = $field . '::id';
74 $fields['children']['custom_fields']['fields'][] = $field . '::url';
75 $fields['children']['custom_fields']['fields'][] = $field . '::title';
76 $fields['children']['custom_fields']['fields'][] = $field . '::alt';
77 $fields['children']['custom_fields']['fields'][] = $field . '::caption';
78 $fields['children']['custom_fields']['fields'][] = $field . '::description';
79 }
80 }
81
82 $fields['children']['custom_fields']['fields'] = apply_filters('iwp/exporter/user/custom_field_list', $fields['children']['custom_fields']['fields'], null);
83
84 return $fields;
85 }
86
87 public function have_records($exporter_id)
88 {
89 $query_args = [];
90 $query_args = apply_filters('iwp/exporter/user_query', $query_args);
91 $query_args = apply_filters(sprintf('iwp/exporter/%d/user_query', $exporter_id), $query_args);
92
93 $query_args = wp_parse_args($query_args, [
94 'number' => -1,
95 'fields' => 'ids'
96 ]);
97
98 $this->query = new \WP_User_Query($query_args);
99 $this->items = $this->query->results;
100
101 return $this->found_records() > 0;
102 }
103
104 public function found_records()
105 {
106 return count($this->items);
107 }
108
109 public function get_records()
110 {
111 return $this->items;
112 }
113
114 public function setup($i)
115 {
116 $user = get_user_by('id', $this->items[$i]);
117 $this->record = (array)$user->data;
118 $this->record['custom_fields'] = get_user_meta($this->record['ID']);
119 $this->record = $this->modify_custom_field_data($this->record, 'user');
120
121 $userdata = get_userdata($this->record['ID']);
122 $this->record['role'] = (array)$userdata->roles;
123
124 foreach (['first_name', 'last_name', 'description'] as $field) {
125
126 if (isset($this->record['custom_fields'][$field])) {
127
128 $this->record[$field] = $this->record['custom_fields'][$field][0];
129 unset($this->record['custom_fields'][$field]);
130 } else {
131
132 $this->record[$field] = '';
133 }
134 }
135
136 return true;
137 }
138 }
139