PluginProbe
Import WP – CSV & XML Import Export for WordPress / 2.15.0
Import WP – CSV & XML Import Export for WordPress v2.15.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
← All changes | class/Common/Exporter/Mapper/UserMapper.php +53 -18 2.7.14 → 2.15.0 View file →
@@ -1,8 +1,9 @@
1 1 <?php
2 2
3 3 namespace ImportWP\Common\Exporter\Mapper;
4 4
5 +use ImportWP\Common\Exporter\ExporterRecord;
5 6 use ImportWP\Common\Exporter\MapperInterface;
6 7
7 8 class UserMapper extends AbstractMapper implements MapperInterface
8 9 {
@@ -10,8 +11,13 @@
10 11 * @var \WP_User_Query
11 12 */
12 13 private $query;
13 14
15 + public function __construct()
16 + {
17 + add_filter('iwp/exporter_record/user', [$this, 'get_record_data'], 10, 3);
18 + }
19 +
14 20 public function get_core_fields()
15 21 {
16 22 return array(
17 23 'ID',
@@ -35,15 +41,15 @@
35 41 global $wpdb;
36 42
37 43 $fields = [
38 44 'key' => 'main',
39 - 'label' => 'User',
45 + 'label' => __('User', 'jc-importer'),
40 46 'loop' => true,
41 47 'fields' => [],
42 48 'children' => [
43 49 'custom_fields' => [
44 50 'key' => 'custom_fields',
45 - 'label' => 'Custom Fields',
51 + 'label' => __('Custom Fields', 'jc-importer'),
46 52 'loop' => true,
47 53 'loop_fields' => ['meta_key', 'meta_value'],
48 54 'fields' => [],
49 55 'children' => []
@@ -53,14 +59,13 @@
53 59 ];
54 60
55 61 $fields['fields'] = $this->get_core_fields();
56 62 $fields['fields'][] = 'role';
57 - $fields['fields'][] = 'first_name';
58 - $fields['fields'][] = 'last_name';
59 63 $fields['fields'][] = 'description';
60 64
61 65 // user meta
62 66 $meta_fields = $wpdb->get_col("SELECT DISTINCT meta_key FROM " . $wpdb->usermeta . " WHERE user_id IN (SELECT DISTINCT ID FROM " . $wpdb->users . " )");
67 + $custom_file_fields = apply_filters('iwp/exporter/user/custom_file_id_fields', []);
63 68 foreach ($meta_fields as $field) {
64 69
65 70 if (in_array($field, ['first_name', 'last_name', 'description'])) {
66 71 continue;
@@ -66,13 +71,23 @@
66 71 continue;
67 72 }
68 73
69 74 $fields['children']['custom_fields']['fields'][] = $field;
75 +
76 + if (in_array($field, $custom_file_fields)) {
77 + $fields['children']['custom_fields']['fields'][] = $field . '::id';
78 + $fields['children']['custom_fields']['fields'][] = $field . '::url';
79 + $fields['children']['custom_fields']['fields'][] = $field . '::title';
80 + $fields['children']['custom_fields']['fields'][] = $field . '::alt';
81 + $fields['children']['custom_fields']['fields'][] = $field . '::caption';
82 + $fields['children']['custom_fields']['fields'][] = $field . '::description';
83 + }
70 84 }
71 85
72 86 $fields['children']['custom_fields']['fields'] = apply_filters('iwp/exporter/user/custom_field_list', $fields['children']['custom_fields']['fields'], null);
87 + $fields = apply_filters('iwp/exporter/user/fields', $fields, 'user');
73 88
74 - return $fields;
89 + return $this->parse_fields($fields);
75 90 }
76 91
77 92 public function have_records($exporter_id)
78 93 {
@@ -103,25 +118,45 @@
103 118
104 119 public function setup($i)
105 120 {
106 121 $user = get_user_by('id', $this->items[$i]);
107 - $this->record = (array)$user->data;
108 - $this->record['custom_fields'] = get_user_meta($this->record['ID']);
109 122
110 - $userdata = get_userdata($this->record['ID']);
111 - $this->record['role'] = (array)$userdata->roles;
123 + $this->record = new ExporterRecord((array)$user->data, 'user');
124 + $this->record = apply_filters('iwp/exporter/user/setup_data', $this->record, 'user');
112 125
113 - foreach (['first_name', 'last_name', 'description'] as $field) {
126 + return true;
127 + }
114 128
115 - if (isset($this->record['custom_fields'][$field])) {
129 + public function get_record_data($value, $key, $record)
130 + {
131 + switch ($key) {
132 + case 'custom_fields':
133 + $value = get_user_meta($record['ID']);
116 134
117 - $this->record[$field] = $this->record['custom_fields'][$field][0];
118 - unset($this->record['custom_fields'][$field]);
119 - } else {
135 + if (isset($value['first_name'])) {
136 + unset($value['first_name']);
137 + }
120 138
121 - $this->record[$field] = '';
122 - }
139 + if (isset($value['last_name'])) {
140 + unset($value['last_name']);
141 + }
142 +
143 + if (isset($value['description'])) {
144 + unset($value['description']);
145 + }
146 +
147 + $value = $this->modify_custom_field_data($value, 'user');
148 + break;
149 + case 'role':
150 + $userdata = get_userdata($record['ID']);
151 + $value = (array)$userdata->roles;
152 + break;
153 + case 'first_name':
154 + case 'last_name':
155 + case 'description':
156 +
157 + $value = get_user_meta($record['ID'], $key, true);
158 + break;
123 159 }
124 -
125 - return true;
160 + return $value;
126 161 }
127 162 }