Import users from CSV with meta - Version 1.14

Version Description

  • Options management improved
  • GUI improved
  • Now you can change the role of users that are not in the CSV file thanks to California Advocates Management Services
Download this release

Release Info

Developer carazo
Plugin Icon 128x128 Import users from CSV with meta
Version 1.14
Comparing to
See all releases

Code changes from version 1.13.2 to 1.14

Files changed (46) hide show
  1. classes/cron.php +76 -50
  2. classes/email-options.php +1 -1
  3. classes/frontend.php +49 -36
  4. classes/homepage.php +72 -137
  5. import-users-from-csv-with-meta.php +76 -74
  6. importer.php +38 -5
  7. readme.txt +6 -1
  8. smtp.php +2 -2
  9. trunk/addons/allow-multiple-accounts.php +48 -0
  10. trunk/addons/buddypress.php +47 -0
  11. addons/acui-indeed-ultimate-membership-pro.php → trunk/addons/indeed-ultimate-membership-pro.php +0 -0
  12. trunk/addons/new-user-approve.php +29 -0
  13. addons/acui-pmpro.php → trunk/addons/pmpro.php +0 -0
  14. addons/acui-users-group.php → trunk/addons/users-group.php +0 -0
  15. addons/acui-woocommerce-membership.php → trunk/addons/woocommerce-membership.php +0 -0
  16. addons/acui-wp-lms-course.php → trunk/addons/wp-lms-course.php +0 -0
  17. trunk/addons/wp-members.php +53 -0
  18. addons/acui-wp-users-group.php → trunk/addons/wp-users-group.php +0 -0
  19. trunk/assets/codection-inmotion.png +0 -0
  20. trunk/assets/email-template-attachment-admin.js +78 -0
  21. trunk/assets/style.css +83 -0
  22. trunk/assets/webempresa_logo.png +0 -0
  23. trunk/classes/columns.php +43 -0
  24. trunk/classes/cron.php +280 -0
  25. trunk/classes/doc.php +155 -0
  26. trunk/classes/donate.php +35 -0
  27. trunk/classes/email-options.php +114 -0
  28. trunk/classes/email-templates.php +156 -0
  29. trunk/classes/frontend.php +146 -0
  30. trunk/classes/help.php +19 -0
  31. trunk/classes/homepage.php +321 -0
  32. trunk/csv_example.png +0 -0
  33. trunk/email-repeated.php +29 -0
  34. trunk/icon_coffee.png +0 -0
  35. trunk/import-users-from-csv-with-meta.php +727 -0
  36. trunk/importer.php +808 -0
  37. trunk/include/shortcode-frontend.php +50 -0
  38. trunk/languages/import-users-from-csv-with-meta-de_DE.mo +0 -0
  39. trunk/languages/import-users-from-csv-with-meta-de_DE.po +1151 -0
  40. trunk/languages/import-users-from-csv-with-meta-fr_FR.mo +0 -0
  41. trunk/languages/import-users-from-csv-with-meta-fr_FR.po +1188 -0
  42. trunk/languages/import-users-from-csv-with-meta.pot +1067 -0
  43. trunk/readme.txt +745 -0
  44. trunk/smtp.php +310 -0
  45. trunk/test.csv +8 -0
  46. trunk/wpml-config.xml +9 -0
classes/cron.php CHANGED
@@ -9,6 +9,8 @@ class ACUI_Cron{
9
  $send_mail_updated = get_option( "acui_cron_send_mail_updated");
10
  $cron_delete_users = get_option( "acui_cron_delete_users");
11
  $cron_delete_users_assign_posts = get_option( "acui_cron_delete_users_assign_posts");
 
 
12
  $path_to_file = get_option( "acui_cron_path_to_file");
13
  $period = get_option( "acui_cron_period");
14
  $role = get_option( "acui_cron_role");
@@ -59,12 +61,19 @@ class ACUI_Cron{
59
  if( empty( $allow_multiple_accounts ) )
60
  $allow_multiple_accounts = "not_allowed";
61
  ?>
62
- <h3><?php _e( "Execute an import of users periodically", 'import-users-from-csv-with-meta' ); ?></h3>
63
 
64
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
65
  <table class="form-table">
66
  <tbody>
67
 
 
 
 
 
 
 
 
68
  <tr class="form-field">
69
  <th scope="row"><label for="path_to_file"><?php _e( "Path of file that are going to be imported", 'import-users-from-csv-with-meta' ); ?></label></th>
70
  <td>
@@ -85,13 +94,6 @@ class ACUI_Cron{
85
  </td>
86
  </tr>
87
 
88
- <tr class="form-field form-required">
89
- <th scope="row"><label for="cron-activated"><?php _e( 'Activate periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
90
- <td>
91
- <input type="checkbox" name="cron-activated" value="yes" <?php if( $cron_activated == true ) echo "checked='checked'"; ?>/>
92
- </td>
93
- </tr>
94
-
95
  <tr class="form-field form-required">
96
  <th scope="row"><label for="send-mail-cron"><?php _e( 'Send mail when using periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
97
  <td>
@@ -105,47 +107,6 @@ class ACUI_Cron{
105
  <input type="checkbox" name="send-mail-updated" value="yes" <?php if( $send_mail_updated == true ) echo "checked='checked'"; ?>/>
106
  </td>
107
  </tr>
108
-
109
- <?php if( is_plugin_active( 'allow-multiple-accounts/allow-multiple-accounts.php' ) ): ?>
110
-
111
- <tr class="form-field form-required">
112
- <th scope="row"><label><?php _e( 'Repeated email in different users?', 'import-users-from-csv-with-meta' ); ?></label></th>
113
- <td>
114
- <input type="checkbox" name="allow_multiple_accounts" value="yes" <?php if( $allow_multiple_accounts == "allowed" ) echo "checked='checked'"; ?>/>
115
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/allow-multiple-accounts/"><?php _e( 'Allow Multiple Accounts', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta'); ?>)</strong>. <?php _e('Allow multiple user accounts to be created having the same email address.','import-users-from-csv-with-meta' ); ?></p>
116
- </td>
117
- </tr>
118
-
119
- <?php endif; ?>
120
-
121
- <tr class="form-field form-required">
122
- <th scope="row"><label for="cron-delete-users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
123
- <td>
124
- <div style="float:left;">
125
- <input type="checkbox" name="cron-delete-users" value="yes" <?php if( $cron_delete_users == true ) echo "checked='checked'"; ?>/>
126
- </div>
127
- <div style="margin-left:25px;">
128
- <select id="cron-delete-users-assign-posts" name="cron-delete-users-assign-posts">
129
- <?php
130
- if( $cron_delete_users_assign_posts == '' )
131
- echo "<option selected='selected' value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
132
- else
133
- echo "<option value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
134
-
135
- $blogusers = get_users();
136
-
137
- foreach ( $blogusers as $bloguser ) {
138
- if( $bloguser->ID == $cron_delete_users_assign_posts )
139
- echo "<option selected='selected' value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
140
- else
141
- echo "<option value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
142
- }
143
- ?>
144
- </select>
145
- <p class="description"><?php _e( 'After delete users, we can choose if we want to assign their posts to another user. Please do not delete them or posts will be deleted.', 'import-users-from-csv-with-meta' ); ?></p>
146
- </div>
147
- </td>
148
- </tr>
149
 
150
  <tr class="form-field form-required">
151
  <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
@@ -202,8 +163,73 @@ class ACUI_Cron{
202
  <p class="description"><?php _e( 'Your file will be renamed after moved, so you will not lost any version of it. The way to rename will be append the time stamp using this date format: YmdHis.', 'import-users-from-csv-with-meta'); ?></p>
203
  </div>
204
  </td>
205
- </tr>
206
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  <tr class="form-field form-required">
208
  <th scope="row"><label for="log"><?php _e( 'Last actions of schedule task', 'import-users-from-csv-with-meta' ); ?></label></th>
209
  <td>
9
  $send_mail_updated = get_option( "acui_cron_send_mail_updated");
10
  $cron_delete_users = get_option( "acui_cron_delete_users");
11
  $cron_delete_users_assign_posts = get_option( "acui_cron_delete_users_assign_posts");
12
+ $cron_change_role_not_present = get_option( "acui_cron_change_role_not_present" );
13
+ $cron_change_role_not_present_role = get_option( "acui_cron_change_role_not_present_role" );
14
  $path_to_file = get_option( "acui_cron_path_to_file");
15
  $period = get_option( "acui_cron_period");
16
  $role = get_option( "acui_cron_role");
61
  if( empty( $allow_multiple_accounts ) )
62
  $allow_multiple_accounts = "not_allowed";
63
  ?>
64
+ <h2><?php _e( "Execute an import of users periodically", 'import-users-from-csv-with-meta' ); ?></h2>
65
 
66
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
67
  <table class="form-table">
68
  <tbody>
69
 
70
+ <tr class="form-field form-required">
71
+ <th scope="row"><label for="cron-activated"><?php _e( 'Activate periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
72
+ <td>
73
+ <input type="checkbox" name="cron-activated" value="yes" <?php if( $cron_activated == true ) echo "checked='checked'"; ?>/>
74
+ </td>
75
+ </tr>
76
+
77
  <tr class="form-field">
78
  <th scope="row"><label for="path_to_file"><?php _e( "Path of file that are going to be imported", 'import-users-from-csv-with-meta' ); ?></label></th>
79
  <td>
94
  </td>
95
  </tr>
96
 
 
 
 
 
 
 
 
97
  <tr class="form-field form-required">
98
  <th scope="row"><label for="send-mail-cron"><?php _e( 'Send mail when using periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
99
  <td>
107
  <input type="checkbox" name="send-mail-updated" value="yes" <?php if( $send_mail_updated == true ) echo "checked='checked'"; ?>/>
108
  </td>
109
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  <tr class="form-field form-required">
112
  <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
163
  <p class="description"><?php _e( 'Your file will be renamed after moved, so you will not lost any version of it. The way to rename will be append the time stamp using this date format: YmdHis.', 'import-users-from-csv-with-meta'); ?></p>
164
  </div>
165
  </td>
166
+ </tr>
167
 
168
+ </tbody>
169
+ </table>
170
+
171
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
172
+
173
+ <table class="form-table">
174
+ <tbody>
175
+
176
+ <tr class="form-field form-required">
177
+ <th scope="row"><label for="cron-delete-users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
178
+ <td>
179
+ <div style="float:left; margin-top: 10px;">
180
+ <input type="checkbox" name="cron-delete-users" value="yes" <?php if( $cron_delete_users == true ) echo "checked='checked'"; ?>/>
181
+ </div>
182
+ <div style="margin-left:25px;">
183
+ <select id="cron-delete-users-assign-posts" name="cron-delete-users-assign-posts">
184
+ <?php
185
+ if( $cron_delete_users_assign_posts == '' )
186
+ echo "<option selected='selected' value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
187
+ else
188
+ echo "<option value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
189
+
190
+ $blogusers = get_users();
191
+
192
+ foreach ( $blogusers as $bloguser ) {
193
+ if( $bloguser->ID == $cron_delete_users_assign_posts )
194
+ echo "<option selected='selected' value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
195
+ else
196
+ echo "<option value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
197
+ }
198
+ ?>
199
+ </select>
200
+ <p class="description"><?php _e( 'After delete users, we can choose if we want to assign their posts to another user. Please do not delete them or posts will be deleted.', 'import-users-from-csv-with-meta' ); ?></p>
201
+ </div>
202
+ </td>
203
+ </tr>
204
+
205
+ <tr class="form-field form-required">
206
+ <th scope="row"><label for="cron-change-role-not-present"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
207
+ <td>
208
+ <div style="float:left; margin-top: 10px;">
209
+ <input type="checkbox" name="cron-change-role-not-present" value="yes" <?php checked( $cron_change_role_not_present ); ?> />
210
+ </div>
211
+ <div style="margin-left:25px;">
212
+ <select id="cron-change-role-not-present-role" name="cron-change-role-not-present-role">
213
+ <?php
214
+ $list_roles = acui_get_editable_roles();
215
+ foreach ($list_roles as $key => $value):
216
+ ?>
217
+ <option value='<?php echo $key; ?>' <?php selected( $cron_change_role_not_present_role, $key ); ?> ><?php echo $value; ?></option>
218
+ <?php endforeach; ?>
219
+ </select>
220
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
221
+ </div>
222
+ </td>
223
+ </tr>
224
+ </tbody>
225
+ </table>
226
+
227
+ <?php do_action( 'acui_tab_cron_before_log' ); ?>
228
+
229
+ <h2><?php _e( 'Log', 'import-users-from-csv-with-meta'); ?></h2>
230
+
231
+ <table class="form-table">
232
+ <tbody>
233
  <tr class="form-field form-required">
234
  <th scope="row"><label for="log"><?php _e( 'Last actions of schedule task', 'import-users-from-csv-with-meta' ); ?></label></th>
235
  <td>
classes/email-options.php CHANGED
@@ -16,7 +16,7 @@ class ACUI_Email_Options{
16
  $template_id = get_option( "acui_mail_template_id" );
17
  $attachment_id = get_option( "acui_mail_attachment_id" );
18
  $enable_email_templates = get_option( "acui_enable_email_templates" );
19
- $automattic_wordpress_email = get_option( "acui_automattic_wordpress_email" );
20
  ?>
21
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
22
  <h3><?php _e('Mail options','import-users-from-csv-with-meta'); ?></h3>
16
  $template_id = get_option( "acui_mail_template_id" );
17
  $attachment_id = get_option( "acui_mail_attachment_id" );
18
  $enable_email_templates = get_option( "acui_enable_email_templates" );
19
+ $automattic_wordpress_email = get_option( "acui_automatic_wordpress_email" );
20
  ?>
21
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
22
  <h3><?php _e('Mail options','import-users-from-csv-with-meta'); ?></h3>
classes/frontend.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php
2
 
3
  if ( ! defined( 'ABSPATH' ) ) exit;
4
 
@@ -8,6 +8,8 @@ class ACUI_Frontend{
8
  $send_mail_updated_frontend = get_option( "acui_frontend_send_mail_updated" );
9
  $delete_users_frontend = get_option( "acui_frontend_delete_users" );
10
  $delete_users_assign_posts_frontend = get_option( "acui_frontend_delete_users_assign_posts" );
 
 
11
  $role = get_option( "acui_frontend_role" );
12
  $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
13
 
@@ -31,6 +33,29 @@ class ACUI_Frontend{
31
  </td>
32
  </tr>
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  <tr class="form-field form-required">
35
  <th scope="row"><label for="send-mail-frontend"><?php _e( 'Send mail when using frontend import?', 'import-users-from-csv-with-meta' ); ?></label></th>
36
  <td>
@@ -44,11 +69,17 @@ class ACUI_Frontend{
44
  <input type="checkbox" name="send-mail-updated-frontend" value="yes" <?php if( $send_mail_updated_frontend == true ) echo "checked='checked'"; ?>/>
45
  </td>
46
  </tr>
 
 
 
 
 
 
47
 
48
  <tr class="form-field form-required">
49
  <th scope="row"><label for="delete-users-frontend"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
50
  <td>
51
- <div style="float:left;">
52
  <input type="checkbox" name="delete-users-frontend" value="yes" <?php if( $delete_users_frontend == true ) echo "checked='checked'"; ?>/>
53
  </div>
54
  <div style="margin-left:25px;">
@@ -75,45 +106,27 @@ class ACUI_Frontend{
75
  </tr>
76
 
77
  <tr class="form-field form-required">
78
- <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
79
- <td>
80
- <select id="role-frontend" name="role-frontend">
81
- <?php
82
- if( $role == '' )
83
- echo "<option selected='selected' value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
84
- else
85
- echo "<option value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
86
-
87
- $list_roles = acui_get_editable_roles();
88
- foreach ($list_roles as $key => $value) {
89
- if($key == $role)
90
- echo "<option selected='selected' value='$key'>$value</option>";
91
- else
92
- echo "<option value='$key'>$value</option>";
93
- }
94
- ?>
95
- </select>
96
- <p class="description"><?php _e( 'Which role would be used to import users?', 'import-users-from-csv-with-meta' ); ?></p>
97
- </td>
98
- </tr>
99
-
100
- <?php if( is_plugin_active( 'wp-members/wp-members.php' ) ): ?>
101
-
102
- <tr class="form-field form-required">
103
- <th scope="row"><label>Activate user when they are being imported?</label></th>
104
  <td>
105
- <select name="activate-users-wp-members-frontend">
106
- <option value="no_activate" <?php selected( $activate_users_wp_members,'no_activate', true ); ?>><?php _e( 'Do not activate users', 'import-users-from-csv-with-meta' ); ?></option>
107
- <option value="activate" <?php selected( $activate_users_wp_members,'activate', true ); ?>><?php _e( 'Activate users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
108
- </select>
109
-
110
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/wp-members/"><?php _e( 'WP Members', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?>)</strong>.</p>
 
 
 
 
 
 
 
 
111
  </td>
112
  </tr>
113
-
114
- <?php endif; ?>
115
  </tbody>
116
  </table>
 
117
  <input class="button-primary" type="submit" value="<?php _e( 'Save frontend import options', 'import-users-from-csv-with-meta'); ?>"/>
118
  </form>
119
 
1
+ <?php
2
 
3
  if ( ! defined( 'ABSPATH' ) ) exit;
4
 
8
  $send_mail_updated_frontend = get_option( "acui_frontend_send_mail_updated" );
9
  $delete_users_frontend = get_option( "acui_frontend_delete_users" );
10
  $delete_users_assign_posts_frontend = get_option( "acui_frontend_delete_users_assign_posts" );
11
+ $change_role_not_present_frontend = get_option( "acui_frontend_change_role_not_present" );
12
+ $change_role_not_present_role_frontend = get_option( "acui_frontend_change_role_not_present_role" );
13
  $role = get_option( "acui_frontend_role" );
14
  $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
15
 
33
  </td>
34
  </tr>
35
 
36
+ <tr class="form-field form-required">
37
+ <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
38
+ <td>
39
+ <select id="role-frontend" name="role-frontend">
40
+ <?php
41
+ if( $role == '' )
42
+ echo "<option selected='selected' value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
43
+ else
44
+ echo "<option value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
45
+
46
+ $list_roles = acui_get_editable_roles();
47
+ foreach ($list_roles as $key => $value) {
48
+ if($key == $role)
49
+ echo "<option selected='selected' value='$key'>$value</option>";
50
+ else
51
+ echo "<option value='$key'>$value</option>";
52
+ }
53
+ ?>
54
+ </select>
55
+ <p class="description"><?php _e( 'Which role would be used to import users?', 'import-users-from-csv-with-meta' ); ?></p>
56
+ </td>
57
+ </tr>
58
+
59
  <tr class="form-field form-required">
60
  <th scope="row"><label for="send-mail-frontend"><?php _e( 'Send mail when using frontend import?', 'import-users-from-csv-with-meta' ); ?></label></th>
61
  <td>
69
  <input type="checkbox" name="send-mail-updated-frontend" value="yes" <?php if( $send_mail_updated_frontend == true ) echo "checked='checked'"; ?>/>
70
  </td>
71
  </tr>
72
+ </tbody>
73
+ </table>
74
+
75
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
76
+ <table class="form-table">
77
+ <tbody>
78
 
79
  <tr class="form-field form-required">
80
  <th scope="row"><label for="delete-users-frontend"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
81
  <td>
82
+ <div style="float:left; margin-top: 10px;">
83
  <input type="checkbox" name="delete-users-frontend" value="yes" <?php if( $delete_users_frontend == true ) echo "checked='checked'"; ?>/>
84
  </div>
85
  <div style="margin-left:25px;">
106
  </tr>
107
 
108
  <tr class="form-field form-required">
109
+ <th scope="row"><label for="change-role-not-present-frontend"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  <td>
111
+ <div style="float:left; margin-top: 10px;">
112
+ <input type="checkbox" name="change-role-not-present-frontend" value="yes" <?php checked( $change_role_not_present_frontend ); ?> />
113
+ </div>
114
+ <div style="margin-left:25px;">
115
+ <select id="change-role-not-present-role-frontend" name="change-role-not-present-role-frontend">
116
+ <?php
117
+ $list_roles = acui_get_editable_roles();
118
+ foreach ($list_roles as $key => $value):
119
+ ?>
120
+ <option value='<?php echo $key; ?>' <?php selected( $change_role_not_present_role_frontend, $key ); ?>><?php echo $value; ?></option>
121
+ <?php endforeach; ?>
122
+ </select>
123
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
124
+ </div>
125
  </td>
126
  </tr>
 
 
127
  </tbody>
128
  </table>
129
+
130
  <input class="button-primary" type="submit" value="<?php _e( 'Save frontend import options', 'import-users-from-csv-with-meta'); ?>"/>
131
  </form>
132
 
classes/homepage.php CHANGED
@@ -51,15 +51,21 @@ class ACUI_Homepage{
51
 
52
  <div class="main_bar">
53
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8" onsubmit="return check();">
 
54
  <table class="form-table">
55
  <tbody>
 
56
  <tr class="form-field form-required">
57
- <th scope="row"><label><?php _e( 'Update existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
58
  <td>
59
- <select name="update_existing_users">
60
- <option value="yes"><?php _e( 'Yes', 'import-users-from-csv-with-meta' ); ?></option>
61
- <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
62
- </select>
 
 
 
 
63
  </td>
64
  </tr>
65
 
@@ -82,44 +88,68 @@ class ACUI_Homepage{
82
  </tr>
83
 
84
  <tr class="form-field form-required">
85
- <th scope="row"><label><?php _e( 'Update roles for existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
86
  <td>
87
- <select name="update_roles_existing_users">
88
- <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
89
- <option value="yes"><?php _e( 'Yes, update and override existing roles', 'import-users-from-csv-with-meta' ); ?></option>
90
- <option value="yes_no_override"><?php _e( 'Yes, add new roles and not override existing ones', 'import-users-from-csv-with-meta' ); ?></option>
91
  </select>
92
  </td>
93
  </tr>
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  <tr class="form-field form-required">
96
- <th scope="row"><label><?php _e( 'CSV file <span class="description">(required)</span></label>', 'import-users-from-csv-with-meta' ); ?></th>
97
  <td>
98
- <div id="upload_file">
99
- <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
100
- <?php _e( '<em>or you can choose directly a file from your host,', 'import-users-from-csv-with-meta' ) ?> <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ) ?></a>.</em>
101
- </div>
102
- <div id="introduce_path" style="display:none;">
103
- <input placeholder="<?php _e( 'You have to introduce the path to file, i.e.:' ,'import-users-from-csv-with-meta' ); ?><?php $upload_dir = wp_upload_dir(); echo $upload_dir["path"]; ?>/test.csv" type="text" name="path_to_file" id="path_to_file" value="<?php echo dirname( __FILE__ ); ?>/test.csv" style="width:70%;" />
104
- <em><?php _e( 'or you can upload it directly from your PC', 'import-users-from-csv-with-meta' ); ?>, <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ); ?></a>.</em>
105
- </div>
106
  </td>
107
  </tr>
108
 
109
  <tr class="form-field form-required">
110
- <th scope="row"><label><?php _e( 'What should the plugin do with empty cells?', 'import-users-from-csv-with-meta' ); ?></label></th>
111
  <td>
112
- <select name="empty_cell_action">
113
- <option value="leave"><?php _e( 'Leave the old value for this metadata', 'import-users-from-csv-with-meta' ); ?></option>
114
- <option value="delete"><?php _e( 'Delete the metadata', 'import-users-from-csv-with-meta' ); ?></option>
 
115
  </select>
116
  </td>
117
  </tr>
 
 
118
 
 
 
 
 
 
119
  <tr class="form-field form-required">
120
  <th scope="row"><label for="delete_users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
121
  <td>
122
- <div style="float:left;">
123
  <input type="checkbox" name="delete_users" value="yes"/>
124
  </div>
125
  <div style="margin-left:25px;">
@@ -138,127 +168,32 @@ class ACUI_Homepage{
138
  </td>
139
  </tr>
140
 
141
- <?php if( is_plugin_active( 'buddypress/bp-loader.php' ) ):
142
-
143
- if( !class_exists( "BP_XProfile_Group" ) ){
144
- require_once( WP_PLUGIN_DIR . "/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php" );
145
- }
146
-
147
- $buddypress_fields = array();
148
- $buddypress_types=array();
149
- $profile_groups = BP_XProfile_Group::get( array( 'fetch_fields' => true ) );
150
-
151
- if ( !empty( $profile_groups ) ) {
152
- foreach ( $profile_groups as $profile_group ) {
153
- if ( !empty( $profile_group->fields ) ) {
154
- foreach ( $profile_group->fields as $field ) {
155
- $buddypress_fields[] = $field->name;
156
- $buddypress_types[] = $field->type;
157
- }
158
- }
159
- }
160
- }
161
- ?>
162
-
163
- <tr class="form-field form-required">
164
- <th scope="row"><label><?php _e( 'BuddyPress users', 'import-users-from-csv-with-meta' ); ?></label></th>
165
- <td><?php _e( 'You can insert any profile from BuddyPress using his name as header. Plugin will check, before import, which fields are defined in BuddyPress and will assign it in the update. You can use this fields:', 'import-users-from-csv-with-meta' ); ?>
166
- <ul style="list-style:disc outside none;margin-left:2em;">
167
- <?php foreach ($buddypress_fields as $buddypress_field ): ?><li><?php echo $buddypress_field; ?></li><?php endforeach; ?>
168
- </ul>
169
- <?php _e( 'Remember that all date fields have to be imported using a format like this: 2016-01-01 00:00:00', 'import-users-from-csv-with-meta' ); ?>
170
-
171
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/buddypress/">BuddyPress</a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?></strong>.)</p>
172
- </td>
173
- </tr>
174
-
175
- <?php endif; ?>
176
-
177
- <?php if( is_plugin_active( 'wp-members/wp-members.php' ) ): ?>
178
-
179
  <tr class="form-field form-required">
180
- <th scope="row"><label>Activate user when they are being imported?</label></th>
181
  <td>
182
- <select name="activate_users_wp_members">
183
- <option value="no_activate"><?php _e( 'Do not activate users', 'import-users-from-csv-with-meta' ); ?></option>
184
- <option value="activate"><?php _e( 'Activate users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
185
- </select>
186
-
187
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/wp-members/"><?php _e( 'WP Members', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?>)</strong>.</p>
188
- </td>
189
-
190
- </tr>
191
-
192
- <?php endif; ?>
193
-
194
- <?php if( is_plugin_active( 'new-user-approve/new-user-approve.php' ) ): ?>
195
-
196
- <tr class="form-field form-required">
197
- <th scope="row"><label><?php _e( 'Approve users at the same time is being created', 'import-users-from-csv-with-meta' ); ?></label></th>
198
- <td>
199
- <select name="approve_users_new_user_appove">
200
- <option value="no_approve"><?php _e( 'Do not approve users', 'import-users-from-csv-with-meta' ); ?></option>
201
- <option value="approve"><?php _e( 'Approve users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
202
- </select>
203
-
204
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://es.wordpress.org/plugins/new-user-approve/"><?php _e( 'New User Approve', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?></strong>.</p>
205
- </td>
206
-
207
- </tr>
208
-
209
- <?php endif; ?>
210
-
211
- <?php if( is_plugin_active( 'allow-multiple-accounts/allow-multiple-accounts.php' ) ): ?>
212
-
213
- <tr class="form-field form-required">
214
- <th scope="row"><label><?php _e( 'Repeated email in different users?', 'import-users-from-csv-with-meta' ); ?></label></th>
215
- <td>
216
- <select name="allow_multiple_accounts">
217
- <option value="not_allowed"><?php _e( 'Not allowed', 'import-users-from-csv-with-meta' ); ?></option>
218
- <option value="allowed"><?php _e( 'Allowed', 'import-users-from-csv-with-meta' ); ?></option>
219
- </select>
220
- <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/allow-multiple-accounts/"><?php _e( 'Allow Multiple Accounts', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta'); ?>)</strong>. <?php _e('Allow multiple user accounts to be created having the same email address.','import-users-from-csv-with-meta' ); ?></p>
221
- </td>
222
- </tr>
223
-
224
- <?php endif; ?>
225
-
226
- <?php if( is_plugin_active( 'wp-access-areas/wp-access-areas.php' ) ): ?>
227
-
228
- <tr class="form-field form-required">
229
- <th scope="row"><label><?php _e('WordPress Access Areas is activated','import-users-from-csv-with-meta'); ?></label></th>
230
- <td>
231
- <p class="description"><?php _e('As user of','import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/wp-access-areas/"><?php _e( 'WordPress Access Areas', 'import-users-from-csv-with-meta' )?></a> <?php _e( 'you can use the Access Areas created', 'import-users-from-csv-with-meta' ); ?> <a href="<?php echo admin_url( 'users.php?page=user_labels' ); ?>"><?php _e( 'here', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'and use this areas in your own CSV file. Please use the column name <strong>wp-access-areas</strong> and in each row use <strong>the name that you have used', 'import-users-from-csv-with-meta' ); ?> <a href="<?php echo admin_url( 'users.php?page=user_labels' ); ?>"><?php _e( 'here', 'import-users-from-csv-with-meta' ); ?></a></strong><?php _e( ', like this ones:', 'import-users-from-csv-with-meta' ); ?></p>
232
- <ol>
233
- <?php
234
- $data = WPAA_AccessArea::get_available_userlabels( '0,5' , NULL );
235
- foreach ( $data as $access_area_object ): ?>
236
- <li><?php echo $access_area_object->cap_title; ?></li>
237
- <?php endforeach; ?>
238
-
239
- </ol>
240
- <p class="description"><?php _e( "If you leave this cell empty for some user or the access area indicated doesn't exist, user won't be assigned to any access area. You can choose more than one area for each user using pads between them in the same row, i.e.: ", 'import-users-from-csv-with-meta' ) ?>access_area1#accces_area2</p>
241
  </td>
242
  </tr>
243
 
244
- <?php endif; ?>
245
-
246
- <tr class="form-field">
247
- <th scope="row"><label for="user_login"><?php _e( 'Send mail', 'import-users-from-csv-with-meta' ); ?></label></th>
248
- <td>
249
- <p>
250
- <?php _e( 'Do you wish to send a mail with credentials and other data?', 'import-users-from-csv-with-meta' ); ?>
251
- <input type="checkbox" name="sends_email" value="yes" <?php if( get_option( 'acui_manually_send_mail' ) ): ?> checked="checked" <?php endif; ?>>
252
- </p>
253
- <p>
254
- <?php _e( 'Do you wish to send this mail also to users that are being updated? (not only to the one which are being created)', 'import-users-from-csv-with-meta' ); ?>
255
- <input type="checkbox" name="send_email_updated" value="yes" <?php if( get_option( 'acui_manually_send_mail_updated' ) ): ?> checked="checked" <?php endif; ?>>
256
- </p>
257
- </td>
258
- </tr>
259
  </tbody>
260
  </table>
261
 
 
 
262
  <?php wp_nonce_field( 'acui-import', 'acui-nonce' ); ?>
263
 
264
  <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="<?php _e( 'Start importing', 'import-users-from-csv-with-meta' ); ?>"/>
51
 
52
  <div class="main_bar">
53
  <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8" onsubmit="return check();">
54
+ <h2><?php _e( 'General', 'import-users-from-csv-with-meta'); ?></h2>
55
  <table class="form-table">
56
  <tbody>
57
+
58
  <tr class="form-field form-required">
59
+ <th scope="row"><label><?php _e( 'CSV file <span class="description">(required)</span></label>', 'import-users-from-csv-with-meta' ); ?></th>
60
  <td>
61
+ <div id="upload_file">
62
+ <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
63
+ <?php _e( '<em>or you can choose directly a file from your host,', 'import-users-from-csv-with-meta' ) ?> <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ) ?></a>.</em>
64
+ </div>
65
+ <div id="introduce_path" style="display:none;">
66
+ <input placeholder="<?php _e( 'You have to introduce the path to file, i.e.:' ,'import-users-from-csv-with-meta' ); ?><?php $upload_dir = wp_upload_dir(); echo $upload_dir["path"]; ?>/test.csv" type="text" name="path_to_file" id="path_to_file" value="<?php echo dirname( __FILE__ ); ?>/test.csv" style="width:70%;" />
67
+ <em><?php _e( 'or you can upload it directly from your PC', 'import-users-from-csv-with-meta' ); ?>, <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ); ?></a>.</em>
68
+ </div>
69
  </td>
70
  </tr>
71
 
88
  </tr>
89
 
90
  <tr class="form-field form-required">
91
+ <th scope="row"><label><?php _e( 'What should the plugin do with empty cells?', 'import-users-from-csv-with-meta' ); ?></label></th>
92
  <td>
93
+ <select name="empty_cell_action">
94
+ <option value="leave"><?php _e( 'Leave the old value for this metadata', 'import-users-from-csv-with-meta' ); ?></option>
95
+ <option value="delete"><?php _e( 'Delete the metadata', 'import-users-from-csv-with-meta' ); ?></option>
 
96
  </select>
97
  </td>
98
  </tr>
99
 
100
+ <tr class="form-field">
101
+ <th scope="row"><label for="user_login"><?php _e( 'Send mail', 'import-users-from-csv-with-meta' ); ?></label></th>
102
+ <td>
103
+ <p>
104
+ <?php _e( 'Do you wish to send a mail with credentials and other data?', 'import-users-from-csv-with-meta' ); ?>
105
+ <input type="checkbox" name="sends_email" value="yes" <?php if( get_option( 'acui_manually_send_mail' ) ): ?> checked="checked" <?php endif; ?>>
106
+ </p>
107
+ <p>
108
+ <?php _e( 'Do you wish to send this mail also to users that are being updated? (not only to the one which are being created)', 'import-users-from-csv-with-meta' ); ?>
109
+ <input type="checkbox" name="send_email_updated" value="yes" <?php if( get_option( 'acui_manually_send_mail_updated' ) ): ?> checked="checked" <?php endif; ?>>
110
+ </p>
111
+ </td>
112
+ </tr>
113
+
114
+ </tbody>
115
+ </table>
116
+
117
+ <h2><?php _e( 'Update users', 'import-users-from-csv-with-meta'); ?></h2>
118
+
119
+ <table class="form-table">
120
+ <tbody>
121
  <tr class="form-field form-required">
122
+ <th scope="row"><label><?php _e( 'Update existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
123
  <td>
124
+ <select name="update_existing_users">
125
+ <option value="yes"><?php _e( 'Yes', 'import-users-from-csv-with-meta' ); ?></option>
126
+ <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
127
+ </select>
 
 
 
 
128
  </td>
129
  </tr>
130
 
131
  <tr class="form-field form-required">
132
+ <th scope="row"><label><?php _e( 'Update roles for existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
133
  <td>
134
+ <select name="update_roles_existing_users">
135
+ <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
136
+ <option value="yes"><?php _e( 'Yes, update and override existing roles', 'import-users-from-csv-with-meta' ); ?></option>
137
+ <option value="yes_no_override"><?php _e( 'Yes, add new roles and not override existing ones', 'import-users-from-csv-with-meta' ); ?></option>
138
  </select>
139
  </td>
140
  </tr>
141
+ </tbody>
142
+ </table>
143
 
144
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
145
+
146
+ <table class="form-table">
147
+ <tbody>
148
+
149
  <tr class="form-field form-required">
150
  <th scope="row"><label for="delete_users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
151
  <td>
152
+ <div style="float:left; margin-top: 10px;">
153
  <input type="checkbox" name="delete_users" value="yes"/>
154
  </div>
155
  <div style="margin-left:25px;">
168
  </td>
169
  </tr>
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  <tr class="form-field form-required">
172
+ <th scope="row"><label for="change_role_not_present"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
173
  <td>
174
+ <div style="float:left; margin-top: 10px;">
175
+ <input type="checkbox" name="change_role_not_present" value="yes"/>
176
+ </div>
177
+ <div style="margin-left:25px;">
178
+ <select id="change_role_not_present_role" name="change_role_not_present_role">
179
+ <?php
180
+ $list_roles = acui_get_editable_roles();
181
+
182
+ foreach ($list_roles as $key => $value) {
183
+ echo "<option value='$key'>$value</option>";
184
+ }
185
+ ?>
186
+ </select>
187
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
188
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  </td>
190
  </tr>
191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  </tbody>
193
  </table>
194
 
195
+ <?php do_action( 'acui_tab_import_before_import_button' ); ?>
196
+
197
  <?php wp_nonce_field( 'acui-import', 'acui-nonce' ); ?>
198
 
199
  <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="<?php _e( 'Start importing', 'import-users-from-csv-with-meta' ); ?>"/>
import-users-from-csv-with-meta.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Import users from CSV with meta
4
  Plugin URI: https://www.codection.com
5
  Description: This plugins allows to import users using CSV files to WP database automatically
6
- Version: 1.13.2
7
  Author: codection
8
  Author URI: https://codection.com
9
  License: GPL2
@@ -86,46 +86,58 @@ function acui_init(){
86
  acui_activate();
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  function acui_activate(){
90
  global $acui_smtp_options;
91
-
92
- add_option( "acui_columns" );
93
-
94
- add_option( "acui_mail_subject", __('Welcome to', 'import-users-from-csv-with-meta') . ' ' . get_bloginfo("name"), '', false );
95
- add_option( "acui_mail_body", __('Welcome,', 'import-users-from-csv-with-meta') . '<br/>' . __('Your data to login in this site is:', 'import-users-from-csv-with-meta') . '<br/><ul><li>' . __('URL to login', 'import-users-from-csv-with-meta') . ': **loginurl**</li><li>' . __( 'Username', 'import-users-from-csv-with-meta') . '= **username**</li><li>Password = **password**</li></ul>', '', false );
96
- add_option( "acui_mail_template_id", 0 );
97
- add_option( "acui_mail_attachment_id", 0 );
98
- add_option( "acui_enable_email_templates", false );
99
-
100
- add_option( "acui_cron_activated", false );
101
- add_option( "acui_cron_send_mail", false );
102
- add_option( "acui_cron_send_mail_updated", false );
103
- add_option( "acui_cron_delete_users", false );
104
- add_option( "acui_cron_delete_users_assign_posts" );
105
- add_option( "acui_cron_path_to_file" );
106
- add_option( "acui_cron_path_to_move" );
107
- add_option( "acui_cron_path_to_move_auto_rename" );
108
- add_option( "acui_cron_period" );
109
- add_option( "acui_cron_role" );
110
- add_option( "acui_cron_update_roles_existing_users" );
111
- add_option( "acui_cron_log" );
112
- add_option( "acui_cron_allow_multiple_accounts", "not_allowed" );
113
-
114
- add_option( "acui_frontend_send_mail", false );
115
- add_option( "acui_frontend_send_mail_updated", false );
116
- add_option( "acui_frontend_delete_users", false );
117
- add_option( "acui_frontend_delete_users_assign_posts" );
118
- add_option( "acui_frontend_role" );
119
-
120
- add_option( "acui_manually_send_mail", false );
121
- add_option( "acui_manually_send_mail_updated", false );
122
-
123
- add_option( "acui_automattic_wordpress_email" );
124
- add_option( "acui_show_profile_fields" );
125
 
126
  // smtp
127
- foreach ( $acui_smtp_options as $name => $val ) {
128
- add_option( $name, $val );
129
  }
130
  }
131
 
@@ -139,43 +151,14 @@ function acui_admin_enqueue_scripts() {
139
 
140
  function acui_delete_options(){
141
  global $acui_smtp_options;
 
 
 
 
 
142
 
143
- delete_option( "acui_columns" );
144
-
145
- delete_option( "acui_mail_subject" );
146
- delete_option( "acui_mail_body" );
147
- delete_option( "acui_mail_template_id" );
148
- delete_option( "acui_mail_attachment_id" );
149
- delete_option( "acui_enable_email_templates" );
150
-
151
- delete_option( "acui_cron_activated" );
152
- delete_option( "acui_cron_send_mail" );
153
- delete_option( "acui_cron_send_mail_updated" );
154
- delete_option( "acui_cron_delete_users" );
155
- delete_option( "acui_cron_delete_users_assign_posts" );
156
- delete_option( "acui_cron_path_to_file" );
157
- delete_option( "acui_cron_path_to_move" );
158
- delete_option( "acui_cron_path_to_move_auto_rename" );
159
- delete_option( "acui_cron_period" );
160
- delete_option( "acui_cron_role" );
161
- delete_option( "acui_cron_update_roles_existing_users" );
162
- delete_option( "acui_cron_log" );
163
- delete_option( "acui_cron_allow_multiple_accounts" );
164
-
165
- delete_option( "acui_frontend_send_mail" );
166
- delete_option( "acui_frontend_send_mail_updated" );
167
- delete_option( "acui_frontend_delete_users" );
168
- delete_option( "acui_frontend_delete_users_assign_posts" );
169
- delete_option( "acui_frontend_role" );
170
-
171
- delete_option( "acui_manually_send_mail" );
172
- delete_option( "acui_manually_send_mail_updated" );
173
-
174
- delete_option( "acui_automattic_wordpress_email" );
175
- delete_option( "acui_show_profile_fields" );
176
-
177
- foreach ( $acui_smtp_options as $name => $val ) {
178
- delete_option( $name );
179
  }
180
  }
181
 
@@ -414,6 +397,13 @@ function acui_manage_frontend_process( $form_data ){
414
 
415
  update_option( "acui_frontend_delete_users_assign_posts", $form_data["delete-users-assign-posts-frontend"] );
416
 
 
 
 
 
 
 
 
417
  if( isset( $form_data["activate-users-wp-members-frontend"] ) )
418
  update_option( "acui_frontend_activate_users_wp_members", $form_data["activate-users-wp-members-frontend"] );
419
  else
@@ -438,7 +428,7 @@ function acui_manage_extra_profile_fields( $form_data ){
438
  }
439
 
440
  function acui_save_mail_template( $form_data ){
441
- update_option( "acui_automattic_wordpress_email", stripslashes( $form_data["automattic_wordpress_email"] ) );
442
  update_option( "acui_mail_body", stripslashes( $form_data["body_mail"] ) );
443
  update_option( "acui_mail_subject", stripslashes( $form_data["subject_mail"] ) );
444
  update_option( "acui_mail_template_id", stripslashes( $form_data["template_id"] ) );
@@ -510,7 +500,19 @@ function acui_manage_cron_process( $form_data ){
510
  update_option( "acui_cron_period", $form_data["period"] );
511
  update_option( "acui_cron_role", $form_data["role"] );
512
  update_option( "acui_cron_update_roles_existing_users", $form_data["update-roles-existing-users"] );
 
 
 
 
 
513
  update_option( "acui_cron_delete_users_assign_posts", $form_data["cron-delete-users-assign-posts"] );
 
 
 
 
 
 
 
514
  ?>
515
  <div class="updated">
516
  <p><?php _e( 'Settings updated correctly', 'import-users-from-csv-with-meta' ) ?></p>
3
  Plugin Name: Import users from CSV with meta
4
  Plugin URI: https://www.codection.com
5
  Description: This plugins allows to import users using CSV files to WP database automatically
6
+ Version: 1.14
7
  Author: codection
8
  Author URI: https://codection.com
9
  License: GPL2
86
  acui_activate();
87
  }
88
 
89
+ function acui_get_default_options_list(){
90
+ return array(
91
+ 'acui_columns' => array(),
92
+ // emails
93
+ 'acui_mail_subject' => __('Welcome to', 'import-users-from-csv-with-meta') . ' ' . get_bloginfo("name"),
94
+ 'acui_mail_body' => __('Welcome,', 'import-users-from-csv-with-meta') . '<br/>' . __('Your data to login in this site is:', 'import-users-from-csv-with-meta') . '<br/><ul><li>' . __('URL to login', 'import-users-from-csv-with-meta') . ': **loginurl**</li><li>' . __( 'Username', 'import-users-from-csv-with-meta') . '= **username**</li><li>Password = **password**</li></ul>',
95
+ 'acui_mail_template_id' => 0,
96
+ 'acui_mail_attachment_id' => 0,
97
+ 'acui_enable_email_templates' => false,
98
+ // cron
99
+ 'acui_cron_activated' => false,
100
+ 'acui_cron_send_mail' => false,
101
+ 'acui_cron_send_mail_updated' => false,
102
+ 'acui_cron_delete_users' => false,
103
+ 'acui_cron_delete_users_assign_posts' => 0,
104
+ 'acui_cron_change_role_not_present' => false,
105
+ 'acui_cron_change_role_not_present_role' => 0,
106
+ 'acui_cron_path_to_file' => '',
107
+ 'acui_cron_path_to_move' => '',
108
+ 'acui_cron_path_to_move_auto_rename' => false,
109
+ 'acui_cron_period' => '',
110
+ 'acui_cron_role' => '',
111
+ 'acui_cron_update_roles_existing_users' => '',
112
+ 'acui_cron_log' => '',
113
+ 'acui_cron_allow_multiple_accounts' => 'not_allowed',
114
+ // frontend
115
+ 'acui_frontend_send_mail'=> false,
116
+ 'acui_frontend_send_mail_updated' => false,
117
+ 'acui_frontend_delete_users' => false,
118
+ 'acui_frontend_delete_users_assign_posts' => 0,
119
+ 'acui_frontend_change_role_not_present' => false,
120
+ 'acui_frontend_change_role_not_present_role' => 0,
121
+ 'acui_frontend_role' => '',
122
+ // others
123
+ 'acui_manually_send_mail' => false,
124
+ 'acui_manually_send_mail_updated' => false,
125
+ 'acui_automatic_wordpress_email' => false,
126
+ 'acui_show_profile_fields' => false
127
+ );
128
+ }
129
+
130
  function acui_activate(){
131
  global $acui_smtp_options;
132
+ $acui_default_options_list = acui_get_default_options_list();
133
+
134
+ foreach ( $acui_default_options_list as $key => $value) {
135
+ add_option( $key, $value );
136
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  // smtp
139
+ foreach ( $acui_smtp_options as $key => $value ) {
140
+ add_option( $key, $value );
141
  }
142
  }
143
 
151
 
152
  function acui_delete_options(){
153
  global $acui_smtp_options;
154
+ $acui_default_options_list = acui_get_default_options_list();
155
+
156
+ foreach ( $acui_default_options_list as $key => $value) {
157
+ delete_option( $key );
158
+ }
159
 
160
+ foreach ( $acui_smtp_options as $key => $value ) {
161
+ delete_option( $key );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  }
163
  }
164
 
397
 
398
  update_option( "acui_frontend_delete_users_assign_posts", $form_data["delete-users-assign-posts-frontend"] );
399
 
400
+ if( isset( $form_data["change-role-not-present-frontend"] ) && $form_data["change-role-not-present-frontend"] == "yes" )
401
+ update_option( "acui_frontend_change_role_not_present", true );
402
+ else
403
+ update_option( "acui_frontend_change_role_not_present", false );
404
+
405
+ update_option( "acui_frontend_change_role_not_present_role", $form_data["change-role-not-present-role-frontend"] );
406
+
407
  if( isset( $form_data["activate-users-wp-members-frontend"] ) )
408
  update_option( "acui_frontend_activate_users_wp_members", $form_data["activate-users-wp-members-frontend"] );
409
  else
428
  }
429
 
430
  function acui_save_mail_template( $form_data ){
431
+ update_option( "acui_automatic_wordpress_email", stripslashes( $form_data["automattic_wordpress_email"] ) );
432
  update_option( "acui_mail_body", stripslashes( $form_data["body_mail"] ) );
433
  update_option( "acui_mail_subject", stripslashes( $form_data["subject_mail"] ) );
434
  update_option( "acui_mail_template_id", stripslashes( $form_data["template_id"] ) );
500
  update_option( "acui_cron_period", $form_data["period"] );
501
  update_option( "acui_cron_role", $form_data["role"] );
502
  update_option( "acui_cron_update_roles_existing_users", $form_data["update-roles-existing-users"] );
503
+
504
+ if( isset( $form_data["cron-delete-users"] ) && $form_data["cron-delete-users"] == "yes" )
505
+ update_option( "acui_cron_delete_users", true );
506
+ else
507
+ update_option( "acui_cron_delete_users", false );
508
  update_option( "acui_cron_delete_users_assign_posts", $form_data["cron-delete-users-assign-posts"] );
509
+
510
+ if( isset( $form_data["cron-change-role-not-present"] ) && $form_data["cron-change-role-not-present"] == "yes" )
511
+ update_option( "acui_cron_change_role_not_present", true );
512
+ else
513
+ update_option( "acui_cron_change_role_not_present", false );
514
+
515
+ update_option( "acui_cron_change_role_not_present_role", $form_data["cron-change-role-not-present-role"] );
516
  ?>
517
  <div class="updated">
518
  <p><?php _e( 'Settings updated correctly', 'import-users-from-csv-with-meta' ) ?></p>
importer.php CHANGED
@@ -45,6 +45,8 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
45
  $empty_cell_action = isset( $form_data["empty_cell_action"] ) ? $form_data["empty_cell_action"] : '';
46
  $delete_users = isset( $form_data["delete_users"] ) ? $form_data["delete_users"] : '';
47
  $delete_users_assign_posts = isset( $form_data["delete_users_assign_posts"] ) ? $form_data["delete_users_assign_posts"] : '';
 
 
48
 
49
  if( $is_frontend ){
50
  $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
@@ -89,7 +91,7 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
89
  update_option( "acui_manually_send_mail_updated", false );
90
 
91
  // disable WordPress default emails if this must be disabled
92
- if( !get_option('acui_automattic_wordpress_email') ){
93
  add_filter( 'send_email_change_email', 'acui_return_false', 999 );
94
  add_filter( 'send_password_change_email', 'acui_return_false', 999 );
95
  }
@@ -624,7 +626,7 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
624
  endwhile;
625
 
626
  // let the filter of default WordPress emails as it were before deactivating them
627
- if( !get_option('acui_automattic_wordpress_email') ){
628
  remove_filter( 'send_email_change_email', 'acui_return_false', 999 );
629
  remove_filter( 'send_password_change_email', 'acui_return_false', 999 );
630
  }
@@ -634,6 +636,7 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
634
 
635
  // delete all users that have not been imported
636
  $delete_users_flag = false;
 
637
 
638
  if( $delete_users == 'yes' ){
639
  $delete_users_flag = true;
@@ -649,8 +652,24 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
649
  $delete_users_assign_posts = get_option( "acui_frontend_delete_users_assign_posts");
650
  }
651
 
652
- if( $error_importing ) // if there is some problem of some kind importing we won't proceed with delete to avoid problems
 
 
 
 
 
 
 
 
 
 
 
 
 
 
653
  $delete_users_flag = false;
 
 
654
 
655
  if( $delete_users_flag ):
656
  require_once( ABSPATH . 'wp-admin/includes/user.php');
@@ -658,8 +677,7 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
658
  $all_users = get_users( array(
659
  'fields' => array( 'ID' ),
660
  'role__not_in' => array( 'administrator' )
661
- ) );
662
-
663
 
664
  foreach ( $all_users as $user ) {
665
  if( !in_array( $user->ID, $users_registered ) ){
@@ -673,6 +691,21 @@ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false,
673
  }
674
  endif;
675
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
676
  ?>
677
  </table>
678
 
45
  $empty_cell_action = isset( $form_data["empty_cell_action"] ) ? $form_data["empty_cell_action"] : '';
46
  $delete_users = isset( $form_data["delete_users"] ) ? $form_data["delete_users"] : '';
47
  $delete_users_assign_posts = isset( $form_data["delete_users_assign_posts"] ) ? $form_data["delete_users_assign_posts"] : '';
48
+ $change_role_not_present = isset( $form_data["change_role_not_present"] ) ? $form_data["change_role_not_present"] : '';
49
+ $change_role_not_present_role = isset( $form_data["change_role_not_present_role"] ) ? $form_data["change_role_not_present_role"] : '';
50
 
51
  if( $is_frontend ){
52
  $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
91
  update_option( "acui_manually_send_mail_updated", false );
92
 
93
  // disable WordPress default emails if this must be disabled
94
+ if( !get_option('acui_automatic_wordpress_email') ){
95
  add_filter( 'send_email_change_email', 'acui_return_false', 999 );
96
  add_filter( 'send_password_change_email', 'acui_return_false', 999 );
97
  }
626
  endwhile;
627
 
628
  // let the filter of default WordPress emails as it were before deactivating them
629
+ if( !get_option('acui_automatic_wordpress_email') ){
630
  remove_filter( 'send_email_change_email', 'acui_return_false', 999 );
631
  remove_filter( 'send_password_change_email', 'acui_return_false', 999 );
632
  }
636
 
637
  // delete all users that have not been imported
638
  $delete_users_flag = false;
639
+ $change_role_not_present_flag = false;
640
 
641
  if( $delete_users == 'yes' ){
642
  $delete_users_flag = true;
652
  $delete_users_assign_posts = get_option( "acui_frontend_delete_users_assign_posts");
653
  }
654
 
655
+ if( $change_role_not_present == 'yes' ){
656
+ $change_role_not_present_flag = true;
657
+ }
658
+
659
+ if( $is_cron && get_option( "acui_cron_change_role_not_present" ) ){
660
+ $change_role_not_present_flag = true;
661
+ $change_role_not_present_role = get_option( "acui_cron_change_role_not_present_role");
662
+ }
663
+
664
+ if( $is_frontend && get_option( "acui_frontend_change_role_not_present" ) ){
665
+ $change_role_not_present_flag = true;
666
+ $change_role_not_present_role = get_option( "acui_frontend_change_role_not_present_role");
667
+ }
668
+
669
+ if( $error_importing ){ // if there is some problem of some kind importing we won't proceed with delete or changing role to users not present to avoid problems
670
  $delete_users_flag = false;
671
+ $change_role_not_present_flag = false;
672
+ }
673
 
674
  if( $delete_users_flag ):
675
  require_once( ABSPATH . 'wp-admin/includes/user.php');
677
  $all_users = get_users( array(
678
  'fields' => array( 'ID' ),
679
  'role__not_in' => array( 'administrator' )
680
+ ) );
 
681
 
682
  foreach ( $all_users as $user ) {
683
  if( !in_array( $user->ID, $users_registered ) ){
691
  }
692
  endif;
693
 
694
+ if( $change_role_not_present ):
695
+ require_once( ABSPATH . 'wp-admin/includes/user.php');
696
+
697
+ $all_users = get_users( array(
698
+ 'fields' => array( 'ID' ),
699
+ 'role__not_in' => array( 'administrator' )
700
+ ) );
701
+
702
+ foreach ( $all_users as $user ) {
703
+ if( !in_array( $user->ID, $users_registered ) ){
704
+ $user_object = new WP_User( $user->ID );
705
+ $user_object->set_role( $change_role_not_present_role );
706
+ }
707
+ }
708
+ endif;
709
  ?>
710
  </table>
711
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://paypal.me/codection
4
  Tags: csv, import, importer, meta data, meta, user, users, user meta, editor, profile, custom, fields, delimiter, update, insert
5
  Requires at least: 3.4
6
  Tested up to: 5.1
7
- Stable tag: 1.13.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -74,6 +74,11 @@ Plugin will automatically detect:
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
77
  = 1.13.2 =
78
  * Attachments in email templates and mail options now can be deleted thanks to Joel Frankwick
79
 
4
  Tags: csv, import, importer, meta data, meta, user, users, user meta, editor, profile, custom, fields, delimiter, update, insert
5
  Requires at least: 3.4
6
  Tested up to: 5.1
7
+ Stable tag: 1.14
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
74
 
75
  == Changelog ==
76
 
77
+ = 1.14 =
78
+ * Options management improved
79
+ * GUI improved
80
+ * Now you can change the role of users that are not in the CSV file thanks to California Advocates Management Services
81
+
82
  = 1.13.2 =
83
  * Attachments in email templates and mail options now can be deleted thanks to Joel Frankwick
84
 
smtp.php CHANGED
@@ -45,7 +45,7 @@ function acui_smtp() {
45
  // Start output buffering to grab smtp debugging output
46
  ob_start();
47
 
48
- if( !get_option('acui_automattic_wordpress_email') ){
49
  add_filter( 'send_email_change_email', '__return_false' );
50
  add_filter( 'send_password_change_email', '__return_false' );
51
  }
@@ -60,7 +60,7 @@ function acui_smtp() {
60
  remove_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
61
  remove_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
62
 
63
- if( !get_option('acui_automattic_wordpress_email') ){
64
  remove_filter( 'send_email_change_email', '__return_false' );
65
  remove_filter( 'send_password_change_email', '__return_false' );
66
  }
45
  // Start output buffering to grab smtp debugging output
46
  ob_start();
47
 
48
+ if( !get_option('acui_automatic_wordpress_email') ){
49
  add_filter( 'send_email_change_email', '__return_false' );
50
  add_filter( 'send_password_change_email', '__return_false' );
51
  }
60
  remove_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
61
  remove_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
62
 
63
+ if( !get_option('acui_automatic_wordpress_email') ){
64
  remove_filter( 'send_email_change_email', '__return_false' );
65
  remove_filter( 'send_password_change_email', '__return_false' );
66
  }
trunk/addons/allow-multiple-accounts.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ if( is_plugin_active( 'allow-multiple-accounts/allow-multiple-accounts.php' ) ){
6
+ add_action( 'acui_tab_import_before_import_button', 'acui_allow_multiple_accounts_tab_import_before_import_button' );
7
+ add_action( 'acui_tab_cron_before_log', 'acui_allow_multiple_accounts_tab_cron_before_log' );
8
+ }
9
+
10
+ function acui_allow_multiple_accounts_tab_import_before_import_button(){
11
+ ?>
12
+ <h2><?php _e( 'Allow multiple accounts compatibility', 'import-users-from-csv-with-meta'); ?></h2>
13
+
14
+ <table class="form-table">
15
+ <tbody>
16
+ <tr class="form-field form-required">
17
+ <th scope="row"><label><?php _e( 'Repeated email in different users?', 'import-users-from-csv-with-meta' ); ?></label></th>
18
+ <td>
19
+ <select name="allow_multiple_accounts">
20
+ <option value="not_allowed"><?php _e( 'Not allowed', 'import-users-from-csv-with-meta' ); ?></option>
21
+ <option value="allowed"><?php _e( 'Allowed', 'import-users-from-csv-with-meta' ); ?></option>
22
+ </select>
23
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/allow-multiple-accounts/"><?php _e( 'Allow Multiple Accounts', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta'); ?>)</strong>. <?php _e('Allow multiple user accounts to be created having the same email address.','import-users-from-csv-with-meta' ); ?></p>
24
+ </td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
28
+ <?php
29
+ }
30
+
31
+ function acui_allow_multiple_accounts_tab_cron_before_log(){
32
+ ?>
33
+ <h2><?php _e( 'Allow Multiple Accounts compatibility', 'import-users-from-csv-with-meta'); ?></h2>
34
+
35
+ <table class="form-table">
36
+ <tbody>
37
+
38
+ <tr class="form-field form-required">
39
+ <th scope="row"><label><?php _e( 'Repeated email in different users?', 'import-users-from-csv-with-meta' ); ?></label></th>
40
+ <td>
41
+ <input type="checkbox" name="allow_multiple_accounts" value="yes" <?php if( $allow_multiple_accounts == "allowed" ) echo "checked='checked'"; ?>/>
42
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/allow-multiple-accounts/"><?php _e( 'Allow Multiple Accounts', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta'); ?>)</strong>. <?php _e('Allow multiple user accounts to be created having the same email address.','import-users-from-csv-with-meta' ); ?></p>
43
+ </td>
44
+ </tr>
45
+ </tbody>
46
+ </table>
47
+ <?php
48
+ }
trunk/addons/buddypress.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ if( is_plugin_active( 'buddypress/bp-loader.php' ) ){
6
+ add_action( 'acui_tab_import_before_import_button', 'acui_buddypress_tab_import_before_import_button' );
7
+ }
8
+
9
+ function acui_buddypress_tab_import_before_import_button(){
10
+ if( !class_exists( "BP_XProfile_Group" ) ){
11
+ require_once( WP_PLUGIN_DIR . "/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php" );
12
+ }
13
+
14
+ $buddypress_fields = array();
15
+ $buddypress_types=array();
16
+ $profile_groups = BP_XProfile_Group::get( array( 'fetch_fields' => true ) );
17
+
18
+ if ( !empty( $profile_groups ) ) {
19
+ foreach ( $profile_groups as $profile_group ) {
20
+ if ( !empty( $profile_group->fields ) ) {
21
+ foreach ( $profile_group->fields as $field ) {
22
+ $buddypress_fields[] = $field->name;
23
+ $buddypress_types[] = $field->type;
24
+ }
25
+ }
26
+ }
27
+ }
28
+ ?>
29
+ <h2><?php _e( 'BuddyPress compatibility', 'import-users-from-csv-with-meta'); ?></h2>
30
+
31
+ <table class="form-table">
32
+ <tbody>
33
+ <tr class="form-field form-required">
34
+ <th scope="row"><label><?php _e( 'BuddyPress users', 'import-users-from-csv-with-meta' ); ?></label></th>
35
+ <td><?php _e( 'You can insert any profile from BuddyPress using his name as header. Plugin will check, before import, which fields are defined in BuddyPress and will assign it in the update. You can use this fields:', 'import-users-from-csv-with-meta' ); ?>
36
+ <ul style="list-style:disc outside none;margin-left:2em;">
37
+ <?php foreach ( $buddypress_fields as $buddypress_field ): ?><li><?php echo $buddypress_field; ?></li><?php endforeach; ?>
38
+ </ul>
39
+ <?php _e( 'Remember that all date fields have to be imported using a format like this: 2016-01-01 00:00:00', 'import-users-from-csv-with-meta' ); ?>
40
+
41
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/buddypress/">BuddyPress</a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?></strong>.)</p>
42
+ </td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ <?php
47
+ }
addons/acui-indeed-ultimate-membership-pro.php → trunk/addons/indeed-ultimate-membership-pro.php RENAMED
File without changes
trunk/addons/new-user-approve.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ if( is_plugin_active( 'new-user-approve/new-user-approve.php' ) ){
6
+ add_action( 'acui_tab_import_before_import_button', 'acui_new_user_approve_tab_import_before_import_button' );
7
+ }
8
+
9
+ function acui_new_user_approve_tab_import_before_import_button(){
10
+ ?>
11
+ <h2><?php _e( 'New User Approve compatibility', 'import-users-from-csv-with-meta'); ?></h2>
12
+
13
+ <table class="form-table">
14
+ <tbody>
15
+ <tr class="form-field form-required">
16
+ <th scope="row"><label><?php _e( 'Approve users at the same time is being created', 'import-users-from-csv-with-meta' ); ?></label></th>
17
+ <td>
18
+ <select name="approve_users_new_user_appove">
19
+ <option value="no_approve"><?php _e( 'Do not approve users', 'import-users-from-csv-with-meta' ); ?></option>
20
+ <option value="approve"><?php _e( 'Approve users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
21
+ </select>
22
+
23
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://es.wordpress.org/plugins/new-user-approve/"><?php _e( 'New User Approve', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?></strong>.</p>
24
+ </td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
28
+ <?php
29
+ }
addons/acui-pmpro.php → trunk/addons/pmpro.php RENAMED
File without changes
addons/acui-users-group.php → trunk/addons/users-group.php RENAMED
File without changes
addons/acui-woocommerce-membership.php → trunk/addons/woocommerce-membership.php RENAMED
File without changes
addons/acui-wp-lms-course.php → trunk/addons/wp-lms-course.php RENAMED
File without changes
trunk/addons/wp-members.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ if( is_plugin_active( 'wp-members/wp-members.php' ) ){
6
+ add_action( 'acui_tab_import_before_import_button', 'acui_wp_members_tab_import_before_import_button' );
7
+ add_action( 'acui_tab_frontend_before_save_button', 'acui_wp_members_tab_frontend_before_save_button' );
8
+ }
9
+
10
+ function acui_wp_members_tab_import_before_import_button(){
11
+ ?>
12
+ <h2><?php _e( 'WP Members compatibility', 'import-users-from-csv-with-meta'); ?></h2>
13
+
14
+ <table class="form-table">
15
+ <tbody>
16
+ <tr class="form-field form-required">
17
+ <th scope="row"><label>Activate user when they are being imported?</label></th>
18
+ <td>
19
+ <select name="activate_users_wp_members">
20
+ <option value="no_activate"><?php _e( 'Do not activate users', 'import-users-from-csv-with-meta' ); ?></option>
21
+ <option value="activate"><?php _e( 'Activate users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
22
+ </select>
23
+
24
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/wp-members/"><?php _e( 'WP Members', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?>)</strong>.</p>
25
+ </td>
26
+
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+ <?php
31
+ }
32
+
33
+ function acui_wp_members_tab_frontend_before_save_button(){
34
+ ?>
35
+ <h2><?php _e( 'WP Members compatibility', 'import-users-from-csv-with-meta'); ?></h2>
36
+ <table class="form-table">
37
+ <tbody>
38
+
39
+ <tr class="form-field form-required">
40
+ <th scope="row"><label>Activate user when they are being imported?</label></th>
41
+ <td>
42
+ <select name="activate-users-wp-members-frontend">
43
+ <option value="no_activate" <?php selected( $activate_users_wp_members,'no_activate', true ); ?>><?php _e( 'Do not activate users', 'import-users-from-csv-with-meta' ); ?></option>
44
+ <option value="activate" <?php selected( $activate_users_wp_members,'activate', true ); ?>><?php _e( 'Activate users when they are being imported', 'import-users-from-csv-with-meta' ); ?></option>
45
+ </select>
46
+
47
+ <p class="description"><strong>(<?php _e( 'Only for', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/plugins/wp-members/"><?php _e( 'WP Members', 'import-users-from-csv-with-meta' ); ?></a> <?php _e( 'users', 'import-users-from-csv-with-meta' ); ?>)</strong>.</p>
48
+ </td>
49
+ </tr>
50
+ </tbody>
51
+ </table>
52
+ <?php
53
+ }
addons/acui-wp-users-group.php → trunk/addons/wp-users-group.php RENAMED
File without changes
trunk/assets/codection-inmotion.png ADDED
Binary file
trunk/assets/email-template-attachment-admin.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function($){
2
+ 'use strict';
3
+ var attachmentFrame;
4
+
5
+ $( '#acui_email_option_upload_button,#acui_email_template_upload_button' ).click(function(e) {
6
+ var btn = e.target;
7
+
8
+ if ( !btn ) return;
9
+
10
+ e.preventDefault();
11
+
12
+ attachmentFrame = wp.media.frames.attachmentFrame = wp.media({
13
+ title: email_template_attachment_admin.title,
14
+ button: { text: email_template_attachment_admin.button },
15
+ });
16
+
17
+ attachmentFrame.on('select', function() {
18
+ var media_attachment = attachmentFrame.state().get('selection').first().toJSON();
19
+
20
+ $( '#email_template_attachment_file' ).val( media_attachment.url );
21
+ $( '#email_template_attachment_id' ).val( media_attachment.id );
22
+ });
23
+
24
+ attachmentFrame.open();
25
+ });
26
+
27
+ $( '#enable_email_templates' ).change( function(){
28
+ var enable = $( this ).is( ':checked' );
29
+ var data = {
30
+ 'action': 'acui_refresh_enable_email_templates',
31
+ 'enable': enable,
32
+ 'security': email_template_attachment_admin.nonce,
33
+ };
34
+
35
+ $.post( ajaxurl, data, function( response ) {
36
+ location.reload();
37
+ });
38
+ } );
39
+
40
+ $( '#load_email_template' ).click( function(){
41
+ if( $( '#email_template_selected' ).val() == '' )
42
+ return;
43
+
44
+ var data = {
45
+ 'action': 'acui_email_template_selected',
46
+ 'email_template_selected': $( '#email_template_selected' ).val(),
47
+ 'security': email_template_attachment_admin.nonce,
48
+ };
49
+
50
+ $.post( ajaxurl, data, function( response ) {
51
+ var response = JSON.parse( response );
52
+ $( '#title' ).val( response.title );
53
+ tinyMCE.get( 'body_mail' ).setContent( response.content );
54
+ $( '#email_template_attachment_id' ).val( response.attachment_id );
55
+ if( response.attachment_url != '' ){
56
+ $( '#email_template_attachment_file' ).val( response.attachment_url );
57
+ }
58
+ $( '#template_id' ).val( response.id );
59
+ $( '#save_mail_template_options' ).click();
60
+ });
61
+ } );
62
+
63
+ $( '#acui_email_option_remove_upload_button' ).click( function(){
64
+ var data = {
65
+ 'action': 'acui_mail_options_remove_attachment',
66
+ 'security': email_template_attachment_admin.nonce,
67
+ };
68
+
69
+ $.post( ajaxurl, data, function( response ) {
70
+ location.reload();
71
+ });
72
+ } );
73
+
74
+ $( '#acui_email_template_remove_upload_button' ).click( function(){
75
+ $( '#email_template_attachment_file' ).val( '' );
76
+ $( '#email_template_attachment_id' ).val( '' );
77
+ } );
78
+ });
trunk/assets/style.css ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .acui .main_bar{
2
+ float: left;
3
+ width: 80%;
4
+ }
5
+
6
+ .acui .sidebar {
7
+ float: right;
8
+ font-size: 12px;
9
+ margin: 0 1%;
10
+ width: 18%;
11
+ }
12
+
13
+ .acui .sidebar_section{
14
+ background-color: #F6F6F6;
15
+ border: 1px solid #8A2BE2;
16
+ float: left;
17
+ margin: 0 0 10px;
18
+ padding: 10px;
19
+ width: 100%;
20
+ }
21
+
22
+ .acui .sidebar_section.become_patreon{
23
+ background-color: transparent;
24
+ border: 0;
25
+ }
26
+
27
+ .acui .sidebar ul {
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ .acui .sidebar li {
33
+ font-size: 11px;
34
+ line-height: 16px;
35
+ list-style: disc outside none;
36
+ margin: 5px 0 5px 20px;
37
+ }
38
+
39
+ .acui .sidebar h3 {
40
+ margin: 0 0 10px;
41
+ }
42
+
43
+ .acui .sidebar img {
44
+ display: block;
45
+ margin: 0 auto;
46
+ }
47
+
48
+ .acui .sidebar_section label {
49
+ font-size: 11px;
50
+ }
51
+
52
+ .acui .sidebar_section.webempresa img {
53
+ width: 100%;
54
+ }
55
+
56
+ .acui #vote_us{
57
+ cursor: pointer;
58
+ }
59
+
60
+ .acui .patreon{
61
+ backface-visibility: hidden;
62
+ background-color: rgb(249, 104, 84);
63
+ box-sizing: border-box;
64
+ display: inline-block;
65
+ font-weight: 700;
66
+ position: relative;
67
+ text-align: center;
68
+ text-transform: uppercase;
69
+ user-select: none;
70
+ white-space: inherit;
71
+ cursor: pointer;
72
+ width: 100%;
73
+ color: rgb(255, 255, 255) !important;
74
+ font-size: 1rem !important;
75
+ border-width: 2px;
76
+ border-style: solid;
77
+ border-color: rgb(249, 104, 84);
78
+ border-image: initial;
79
+ border-radius: 0px;
80
+ padding: 1rem 1.5rem;
81
+ text-decoration: none;
82
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
83
+ }
trunk/assets/webempresa_logo.png ADDED
Binary file
trunk/classes/columns.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Columns{
6
+ public static function admin_gui(){
7
+ $show_profile_fields = get_option( "acui_show_profile_fields");
8
+ $headers = get_option("acui_columns");
9
+ ?>
10
+ <h3><?php _e( 'Extra profile fields', 'import-users-from-csv-with-meta' ); ?></h3>
11
+ <table class="form-table">
12
+ <tbody>
13
+ <tr valign="top">
14
+ <th scope="row"><?php _e( 'Show fields in profile?', 'import-users-from-csv-with-meta' ); ?></th>
15
+ <td>
16
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
17
+ <input type="checkbox" name="show-profile-fields" value="yes" <?php if( $show_profile_fields == true ) echo "checked='checked'"; ?>>
18
+ <input type="hidden" name="show-profile-fields-action" value="update"/>
19
+ <input class="button-primary" type="submit" value="<?php _e( 'Save option', 'import-users-from-csv-with-meta'); ?>"/>
20
+ </form>
21
+ </td>
22
+ </tr>
23
+ <tr valign="top">
24
+ <th scope="row"><?php _e( 'Extra profile fields loadad in previous files', 'import-users-from-csv-with-meta' ); ?></th>
25
+ <td><small><em><?php _e( '(if you load another CSV with different columns, the new ones will replace this list)', 'import-users-from-csv-with-meta' ); ?></em></small>
26
+ <ol>
27
+ <?php
28
+ if( is_array( $headers ) && count( $headers ) > 0 ):
29
+ foreach ($headers as $column): ?>
30
+ <li><?php echo $column; ?></li>
31
+ <?php endforeach; ?>
32
+
33
+ <?php else: ?>
34
+ <li><?php _e( 'There is no columns loaded yet', 'import-users-from-csv-with-meta' ); ?></li>
35
+ <?php endif; ?>
36
+ </ol>
37
+ </td>
38
+ </tr>
39
+ </tbody>
40
+ </table>
41
+ <?php
42
+ }
43
+ }
trunk/classes/cron.php ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Cron{
6
+ public static function admin_gui(){
7
+ $cron_activated = get_option( "acui_cron_activated");
8
+ $send_mail_cron = get_option( "acui_cron_send_mail");
9
+ $send_mail_updated = get_option( "acui_cron_send_mail_updated");
10
+ $cron_delete_users = get_option( "acui_cron_delete_users");
11
+ $cron_delete_users_assign_posts = get_option( "acui_cron_delete_users_assign_posts");
12
+ $cron_change_role_not_present = get_option( "acui_cron_change_role_not_present" );
13
+ $cron_change_role_not_present_role = get_option( "acui_cron_change_role_not_present_role" );
14
+ $path_to_file = get_option( "acui_cron_path_to_file");
15
+ $period = get_option( "acui_cron_period");
16
+ $role = get_option( "acui_cron_role");
17
+ $update_roles_existing_users = get_option( "acui_cron_update_roles_existing_users");
18
+ $move_file_cron = get_option( "acui_move_file_cron");
19
+ $path_to_move = get_option( "acui_cron_path_to_move");
20
+ $path_to_move_auto_rename = get_option( "acui_cron_path_to_move_auto_rename");
21
+ $log = get_option( "acui_cron_log");
22
+ $allow_multiple_accounts = get_option("acui_cron_allow_multiple_accounts");
23
+ $loaded_periods = wp_get_schedules();
24
+
25
+ if( empty( $cron_activated ) )
26
+ $cron_activated = false;
27
+
28
+ if( empty( $send_mail_cron ) )
29
+ $send_mail_cron = false;
30
+
31
+ if( empty( $send_mail_updated ) )
32
+ $send_mail_updated = false;
33
+
34
+ if( empty( $cron_delete_users ) )
35
+ $cron_delete_users = false;
36
+
37
+ if( empty( $update_roles_existing_users) )
38
+ $update_roles_existing_users = false;
39
+
40
+ if( empty( $cron_delete_users_assign_posts ) )
41
+ $cron_delete_users_assign_posts = '';
42
+
43
+ if( empty( $path_to_file ) )
44
+ $path_to_file = dirname( __FILE__ ) . '/test.csv';
45
+
46
+ if( empty( $period ) )
47
+ $period = 'hourly';
48
+
49
+ if( empty( $move_file_cron ) )
50
+ $move_file_cron = false;
51
+
52
+ if( empty( $path_to_move ) )
53
+ $path_to_move = dirname( __FILE__ ) . '/move.csv';
54
+
55
+ if( empty( $path_to_move_auto_rename ) )
56
+ $path_to_move_auto_rename = false;
57
+
58
+ if( empty( $log ) )
59
+ $log = "No tasks done yet.";
60
+
61
+ if( empty( $allow_multiple_accounts ) )
62
+ $allow_multiple_accounts = "not_allowed";
63
+ ?>
64
+ <h2><?php _e( "Execute an import of users periodically", 'import-users-from-csv-with-meta' ); ?></h2>
65
+
66
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
67
+ <table class="form-table">
68
+ <tbody>
69
+
70
+ <tr class="form-field form-required">
71
+ <th scope="row"><label for="cron-activated"><?php _e( 'Activate periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
72
+ <td>
73
+ <input type="checkbox" name="cron-activated" value="yes" <?php if( $cron_activated == true ) echo "checked='checked'"; ?>/>
74
+ </td>
75
+ </tr>
76
+
77
+ <tr class="form-field">
78
+ <th scope="row"><label for="path_to_file"><?php _e( "Path of file that are going to be imported", 'import-users-from-csv-with-meta' ); ?></label></th>
79
+ <td>
80
+ <input placeholder="<?php _e('Insert complete path to the file', 'import-users-from-csv-with-meta' ) ?>" type="text" name="path_to_file" id="path_to_file" value="<?php echo $path_to_file; ?>" style="width:70%;" />
81
+ <p class="description"><?php _e( 'You have to introduce the path to file, i.e.:', 'import-users-from-csv-with-meta' ); ?> <?php $upload_dir = wp_upload_dir(); echo $upload_dir["path"]; ?>/test.csv</p>
82
+ </td>
83
+ </tr>
84
+
85
+ <tr class="form-field form-required">
86
+ <th scope="row"><label for="period"><?php _e( 'Period', 'import-users-from-csv-with-meta' ); ?></label></th>
87
+ <td>
88
+ <select id="period" name="period">
89
+ <?php foreach( $loaded_periods as $key => $value ): ?>
90
+ <option <?php if( $period == $key ) echo "selected='selected'"; ?> value="<?php echo $key; ?>"><?php echo $value['display']; ?></option>
91
+ <?php endforeach; ?>
92
+ </select>
93
+ <p class="description"><?php _e( 'How often the event should reoccur?', 'import-users-from-csv-with-meta' ); ?></p>
94
+ </td>
95
+ </tr>
96
+
97
+ <tr class="form-field form-required">
98
+ <th scope="row"><label for="send-mail-cron"><?php _e( 'Send mail when using periodical import?', 'import-users-from-csv-with-meta' ); ?></label></th>
99
+ <td>
100
+ <input type="checkbox" name="send-mail-cron" value="yes" <?php if( $send_mail_cron == true ) echo "checked='checked'"; ?>/>
101
+ </td>
102
+ </tr>
103
+
104
+ <tr class="form-field form-required">
105
+ <th scope="row"><label for="send-mail-updated"><?php _e( 'Send mail also to users that are being updated?', 'import-users-from-csv-with-meta' ); ?></label></th>
106
+ <td>
107
+ <input type="checkbox" name="send-mail-updated" value="yes" <?php if( $send_mail_updated == true ) echo "checked='checked'"; ?>/>
108
+ </td>
109
+ </tr>
110
+
111
+ <tr class="form-field form-required">
112
+ <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
113
+ <td>
114
+ <select id="role" name="role">
115
+ <?php
116
+ if( $role == '' )
117
+ echo "<option selected='selected' value=''>" . __( 'Disable role assignement in cron import', 'import-users-from-csv-with-meta' ) . "</option>";
118
+ else
119
+ echo "<option value=''>" . __( 'Disable role assignement in cron import', 'import-users-from-csv-with-meta' ) . "</option>";
120
+
121
+ $list_roles = acui_get_editable_roles();
122
+ foreach ($list_roles as $key => $value) {
123
+ if($key == $role)
124
+ echo "<option selected='selected' value='$key'>$value</option>";
125
+ else
126
+ echo "<option value='$key'>$value</option>";
127
+ }
128
+ ?>
129
+ </select>
130
+ <p class="description"><?php _e( 'Which role would be used to import users?', 'import-users-from-csv-with-meta' ); ?></p>
131
+ </td>
132
+ </tr>
133
+
134
+ <tr class="form-field form-required">
135
+ <th scope="row"><label for="update-roles-existing-users"><?php _e( 'Update roles for existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
136
+ <td>
137
+ <input type="checkbox" name="update-roles-existing-users" value="yes" <?php if( $update_roles_existing_users == 'yes' ) echo "checked='checked'"; ?>/>
138
+ </td>
139
+ </tr>
140
+
141
+ <tr class="form-field form-required">
142
+ <th scope="row"><label for="move-file-cron"><?php _e( 'Move file after import?', 'import-users-from-csv-with-meta' ); ?></label></th>
143
+ <td>
144
+ <div style="float:left;">
145
+ <input type="checkbox" name="move-file-cron" value="yes" <?php if( $move_file_cron == true ) echo "checked='checked'"; ?>/>
146
+ </div>
147
+
148
+ <div class="move-file-cron-cell" style="margin-left:25px;">
149
+ <input placeholder="<?php _e( 'Insert complete path to the file', 'import-users-from-csv-with-meta'); ?>" type="text" name="path_to_move" id="path_to_move" value="<?php echo $path_to_move; ?>" style="width:70%;" />
150
+ <p class="description"><?php _e( 'You have to introduce the path to file, i.e.:', 'import-users-from-csv-with-meta'); ?> <?php $upload_dir = wp_upload_dir(); echo $upload_dir["path"]; ?>/move.csv</p>
151
+ </div>
152
+ </td>
153
+ </tr>
154
+
155
+ <tr class="form-field form-required move-file-cron-cell">
156
+ <th scope="row"><label for="move-file-cron"><?php _e( 'Auto rename after move?', 'import-users-from-csv-with-meta' ); ?></label></th>
157
+ <td>
158
+ <div style="float:left;">
159
+ <input type="checkbox" name="path_to_move_auto_rename" value="yes" <?php if( $path_to_move_auto_rename == true ) echo "checked='checked'"; ?>/>
160
+ </div>
161
+
162
+ <div style="margin-left:25px;">
163
+ <p class="description"><?php _e( 'Your file will be renamed after moved, so you will not lost any version of it. The way to rename will be append the time stamp using this date format: YmdHis.', 'import-users-from-csv-with-meta'); ?></p>
164
+ </div>
165
+ </td>
166
+ </tr>
167
+
168
+ </tbody>
169
+ </table>
170
+
171
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
172
+
173
+ <table class="form-table">
174
+ <tbody>
175
+
176
+ <tr class="form-field form-required">
177
+ <th scope="row"><label for="cron-delete-users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
178
+ <td>
179
+ <div style="float:left; margin-top: 10px;">
180
+ <input type="checkbox" name="cron-delete-users" value="yes" <?php if( $cron_delete_users == true ) echo "checked='checked'"; ?>/>
181
+ </div>
182
+ <div style="margin-left:25px;">
183
+ <select id="cron-delete-users-assign-posts" name="cron-delete-users-assign-posts">
184
+ <?php
185
+ if( $cron_delete_users_assign_posts == '' )
186
+ echo "<option selected='selected' value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
187
+ else
188
+ echo "<option value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
189
+
190
+ $blogusers = get_users();
191
+
192
+ foreach ( $blogusers as $bloguser ) {
193
+ if( $bloguser->ID == $cron_delete_users_assign_posts )
194
+ echo "<option selected='selected' value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
195
+ else
196
+ echo "<option value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
197
+ }
198
+ ?>
199
+ </select>
200
+ <p class="description"><?php _e( 'After delete users, we can choose if we want to assign their posts to another user. Please do not delete them or posts will be deleted.', 'import-users-from-csv-with-meta' ); ?></p>
201
+ </div>
202
+ </td>
203
+ </tr>
204
+
205
+ <tr class="form-field form-required">
206
+ <th scope="row"><label for="cron-change-role-not-present"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
207
+ <td>
208
+ <div style="float:left; margin-top: 10px;">
209
+ <input type="checkbox" name="cron-change-role-not-present" value="yes" <?php checked( $cron_change_role_not_present ); ?> />
210
+ </div>
211
+ <div style="margin-left:25px;">
212
+ <select id="cron-change-role-not-present-role" name="cron-change-role-not-present-role">
213
+ <?php
214
+ $list_roles = acui_get_editable_roles();
215
+ foreach ($list_roles as $key => $value):
216
+ ?>
217
+ <option value='<?php echo $key; ?>' <?php selected( $cron_change_role_not_present_role, $key ); ?> ><?php echo $value; ?></option>
218
+ <?php endforeach; ?>
219
+ </select>
220
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
221
+ </div>
222
+ </td>
223
+ </tr>
224
+ </tbody>
225
+ </table>
226
+
227
+ <?php do_action( 'acui_tab_cron_before_log' ); ?>
228
+
229
+ <h2><?php _e( 'Log', 'import-users-from-csv-with-meta'); ?></h2>
230
+
231
+ <table class="form-table">
232
+ <tbody>
233
+ <tr class="form-field form-required">
234
+ <th scope="row"><label for="log"><?php _e( 'Last actions of schedule task', 'import-users-from-csv-with-meta' ); ?></label></th>
235
+ <td>
236
+ <pre><?php echo $log; ?></pre>
237
+ </td>
238
+ </tr>
239
+
240
+ </tbody>
241
+ </table>
242
+ <input class="button-primary" type="submit" value="<?php _e( 'Save schedule options', 'import-users-from-csv-with-meta'); ?>"/>
243
+ </form>
244
+
245
+ <script>
246
+ jQuery( document ).ready( function( $ ){
247
+ $( "[name='cron-delete-users']" ).change(function() {
248
+ if( $(this).is( ":checked" ) ) {
249
+ var returnVal = confirm("<?php _e( 'Are you sure to delete all users that are not present in the CSV? This action cannot be undone.', 'import-users-from-csv-with-meta' ); ?>");
250
+ $(this).attr("checked", returnVal);
251
+
252
+ if( returnVal )
253
+ $( '#cron-delete-users-assign-posts' ).show();
254
+ }
255
+ else{
256
+ $( '#cron-delete-users-assign-posts' ).hide();
257
+ }
258
+ });
259
+
260
+ $( "[name='move-file-cron']" ).change(function() {
261
+ if( $(this).is( ":checked" ) ){
262
+ $( '.move-file-cron-cell' ).show();
263
+ }
264
+ else{
265
+ $( '.move-file-cron-cell' ).hide();
266
+ }
267
+ });
268
+
269
+ <?php if( $cron_delete_users == '' ): ?>
270
+ $( '#cron-delete-users-assign-posts' ).hide();
271
+ <?php endif; ?>
272
+
273
+ <?php if( !$move_file_cron ): ?>
274
+ $( '.move-file-cron-cell' ).hide();
275
+ <?php endif; ?>
276
+ });
277
+ </script>
278
+ <?php
279
+ }
280
+ }
trunk/classes/doc.php ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Doc{
6
+ public static function message(){
7
+ ?>
8
+ <h3><?php _e( 'Documentation', 'import-users-from-csv-with-meta' ); ?></h3>
9
+ <table class="form-table">
10
+ <tbody>
11
+ <tr valign="top">
12
+ <th scope="row"><?php _e( 'Columns position', 'import-users-from-csv-with-meta' ); ?></th>
13
+ <td><small><em><?php _e( '(Documents should look like the one presented into screenshot. Remember you should fill the first two columns with the next values)', 'import-users-from-csv-with-meta' ); ?></em></small>
14
+ <ol>
15
+ <li><?php _e( 'Username', 'import-users-from-csv-with-meta' ); ?></li>
16
+ <li><?php _e( 'Email', 'import-users-from-csv-with-meta' ); ?></li>
17
+ </ol>
18
+ <small><em><?php _e( '(The next columns are totally customizable and you can use whatever you want. All rows must contains same columns)', 'import-users-from-csv-with-meta' ); ?></em></small>
19
+ <small><em><?php _e( '(User profile will be adapted to the kind of data you have selected)', 'import-users-from-csv-with-meta' ); ?></em></small>
20
+ <small><em><?php _e( '(If you want to disable the extra profile information, please deactivate this plugin after make the import)', 'import-users-from-csv-with-meta' ); ?></em></small>
21
+ </td>
22
+ </tr>
23
+ <tr valign="top">
24
+ <th scope="row"><?php _e( 'id (column id)', 'import-users-from-csv-with-meta' ); ?></th>
25
+ <td><?php _e( 'You can use a column called id in order to make inserts or updates of an user using the ID used by WordPress in the wp_users table. We have two different cases:', 'import-users-from-csv-with-meta' ); ?>
26
+ <ul style="list-style:disc outside none; margin-left:2em;">
27
+ <li><?php _e( "If id <strong>doesn't exist in your users table</strong>: WordPress core does not allow us insert it, so it will throw an error of kind: invalid_user_id", 'import-users-from-csv-with-meta' ); ?></li>
28
+ <li><?php _e( "If id <strong>exists</strong>: plugin check if username is the same, if yes, it will update the data, if not, it ignores the cell to avoid problems", 'import-users-from-csv-with-meta' ); ?></li>
29
+ </ul>
30
+ </td>
31
+ </tr>
32
+ <tr valign="top">
33
+ <th scope="row"><?php _e( "Passwords (column password)", 'import-users-from-csv-with-meta' ); ?></th>
34
+ <td><?php _e( "A string that contains user passwords. We have different options for this case:", 'import-users-from-csv-with-meta' ); ?>
35
+ <ul style="list-style:disc outside none; margin-left:2em;">
36
+ <li><?php _e( "If you <strong>don't create a column for passwords</strong>: passwords will be generated automatically", 'import-users-from-csv-with-meta' ); ?></li>
37
+ <li><?php _e( "If you <strong>create a column for passwords</strong>: if cell is empty, password won't be updated; if cell has a value, it will be used", 'import-users-from-csv-with-meta' ); ?></li>
38
+ </ul>
39
+ </td>
40
+ </tr>
41
+ <tr valign="top">
42
+ <th scope="row"><?php _e( "Roles (column role)", 'import-users-from-csv-with-meta' ); ?></th>
43
+ <td><?php _e( "Plugin can import roles from the CSV. This is how it works:", 'import-users-from-csv-with-meta' ); ?>
44
+ <ul style="list-style:disc outside none; margin-left:2em;">
45
+ <li><?php _e( "If you <strong>don't create a column for roles</strong>: roles would be chosen from the 'Default role' field in import screen.", 'import-users-from-csv-with-meta' ); ?></li>
46
+ <li><?php _e( "If you <strong>create a column called 'role'</strong>: if cell is empty, roles would be chosen from 'Default role' field in import screen; if cell has a value, it will be used as role, if this role doesn't exist the default one would be used", 'import-users-from-csv-with-meta' ); ?></li>
47
+ <li><?php _e( "Multiple roles can be imported creating <strong>a list of roles</strong> using commas to separate values.", 'import-users-from-csv-with-meta' ); ?></li>
48
+ </ul>
49
+ <em><?php _e( "Notice: If the default new role is administrator in WordPress settings, role will not be set during a CSV file import with this plugin. Check it if all users are being imported as administrators and you have set another role in this plugin.", 'import-users-from-csv-with-meta' ); ?></em>
50
+ </td>
51
+ </tr>
52
+ <tr valign="top">
53
+ <th scope="row"><?php _e( "Serialized data", 'import-users-from-csv-with-meta' ); ?></th>
54
+ <td><?php _e( "Plugin can now import serialized data. You have to use the serialized string directly in the CSV cell in order the plugin will be able to understand it as an serialized data instead as any other string.", 'import-users-from-csv-with-meta' ); ?>
55
+ </td>
56
+ </tr>
57
+ <tr valign="top">
58
+ <th scope="row"><?php _e( "Lists", 'import-users-from-csv-with-meta' ); ?></th>
59
+ <td><?php _e( "Plugin can now import lists an array. Use this separator:", 'import-users-from-csv-with-meta'); ?> <strong>::</strong> <?php _e("two colons, inside the cell in order to split the string in a list of items.", 'import-users-from-csv-with-meta' ); ?>
60
+ </td>
61
+ </tr>
62
+ <tr valign="top">
63
+ <th scope="row"><?php _e( 'WordPress default profile data', 'import-users-from-csv-with-meta' ); ?></th>
64
+ <td><?php _e( "You can use those labels if you want to set data adapted to the WordPress default user columns (the ones who use the function", 'import-users-from-csv-with-meta' ); ?> <a href="http://codex.wordpress.org/Function_Reference/wp_update_user">wp_update_user</a>)
65
+ <ol>
66
+ <li><strong>user_nicename</strong>: <?php _e( "A string that contains a URL-friendly name for the user. The default is the user's username.", 'import-users-from-csv-with-meta' ); ?></li>
67
+ <li><strong>user_url</strong>: <?php _e( "A string containing the user's URL for the user's web site.", 'import-users-from-csv-with-meta' ); ?> </li>
68
+ <li><strong>display_name</strong>: <?php _e( "A string that will be shown on the site. Defaults to user's username. It is likely that you will want to change this, for both appearance and security through obscurity (that is if you don't use and delete the default admin user).", 'import-users-from-csv-with-meta' ); ?></li>
69
+ <li><strong>nickname</strong>: <?php _e( "The user's nickname, defaults to the user's username.", 'import-users-from-csv-with-meta' ); ?> </li>
70
+ <li><strong>first_name</strong>: <?php _e( "The user's first name.", 'import-users-from-csv-with-meta' ); ?></li>
71
+ <li><strong>last_name</strong>: <?php _e("The user's last name.", 'import-users-from-csv-with-meta' ); ?></li>
72
+ <li><strong>description</strong>: <?php _e("A string containing content about the user.", 'import-users-from-csv-with-meta' ); ?></li>
73
+ <li><strong>jabber</strong>: <?php _e("User's Jabber account.", 'import-users-from-csv-with-meta' ); ?></li>
74
+ <li><strong>aim</strong>: <?php _e("User's AOL IM account.", 'import-users-from-csv-with-meta' ); ?></li>
75
+ <li><strong>yim</strong>: <?php _e("User's Yahoo IM account.", 'import-users-from-csv-with-meta' ); ?></li>
76
+ <li><strong>user_registered</strong>: <?php _e( "Using the WordPress format for this kind of data Y-m-d H:i:s.", "import-users-from-csv-with-meta "); ?></li>
77
+ </ol>
78
+ </td>
79
+ </tr>
80
+
81
+ <?php if( is_plugin_active( 'woocommerce/woocommerce.php' ) ): ?>
82
+
83
+ <tr valign="top">
84
+ <th scope="row"><?php _e( "WooCommerce is activated", 'import-users-from-csv-with-meta' ); ?></th>
85
+ <td><?php _e( "You can use those labels if you want to set data adapted to the WooCommerce default user columns", 'import-users-from-csv-with-meta' ); ?>
86
+ <ol>
87
+ <li>billing_first_name</li>
88
+ <li>billing_last_name</li>
89
+ <li>billing_company</li>
90
+ <li>billing_address_1</li>
91
+ <li>billing_address_2</li>
92
+ <li>billing_city</li>
93
+ <li>billing_postcode</li>
94
+ <li>billing_country</li>
95
+ <li>billing_state</li>
96
+ <li>billing_phone</li>
97
+ <li>billing_email</li>
98
+ <li>shipping_first_name</li>
99
+ <li>shipping_last_name</li>
100
+ <li>shipping_company</li>
101
+ <li>shipping_address_1</li>
102
+ <li>shipping_address_2</li>
103
+ <li>shipping_city</li>
104
+ <li>shipping_postcode</li>
105
+ <li>shipping_country</li>
106
+ <li>shipping_state</li>
107
+ </ol>
108
+ </td>
109
+ </tr>
110
+ <?php endif; ?>
111
+
112
+ <?php if( is_plugin_active( 'buddypress/bp-loader.php' ) ): ?>
113
+
114
+ <tr valign="top">
115
+ <th scope="row"><?php _e( "BuddyPress is activated", 'import-users-from-csv-with-meta' ); ?></th>
116
+ <td><?php _e( "You can use the <strong>profile fields</strong> you have created and also you can set one or more groups for each user. For example:", 'import-users-from-csv-with-meta' ); ?>
117
+ <ul style="list-style:disc outside none; margin-left:2em;">
118
+ <li><?php _e( "If you want to assign an user to a group you have to create a column 'bp_group' and a column 'bp_group_role'", 'import-users-from-csv-with-meta' ); ?></li>
119
+ <li><?php _e( "Then in each cell you have to fill with the BuddyPress <strong>group slug</strong>", 'import-users-from-csv-with-meta' ); ?></li>
120
+ <li><?php _e( "And the role assigned in this group: <em>Administrator, Moderator or Member</em>", 'import-users-from-csv-with-meta' ); ?></li>
121
+ <li><?php _e( "You can do it with multiple groups at the same time using commas to separate different groups, in bp_group column, i.e.: <em>group_1, group_2, group_3</em>", 'import-users-from-csv-with-meta' ); ?></li>
122
+ <li><?php _e( "But you will have to assign a role for each group: <em>Moderator,Moderator,Member,Member</em>", 'import-users-from-csv-with-meta' ); ?></li>
123
+ <li><?php _e( "If you get some error of this kind:", 'import-users-from-csv-with-meta' ); ?> <code>Fatal error: Class 'BP_XProfile_Group'</code> <?php _e( "please enable Buddypress Extended Profile then import the csv file. You can then disable this afterwards", 'import-users-from-csv-with-meta' ); ?></li>
124
+ </ul>
125
+ </td>
126
+ </tr>
127
+
128
+ <?php endif; ?>
129
+
130
+ <?php do_action( 'acui_documentation_after_plugins_activated' ); ?>
131
+
132
+ <tr valign="top">
133
+ <th scope="row"><?php _e( "Important notice", 'import-users-from-csv-with-meta' ); ?></th>
134
+ <td><?php _e( "You can upload as many files as you want, but all must have the same columns. If you upload another file, the columns will change to the form of last file uploaded.", 'import-users-from-csv-with-meta' ); ?></td>
135
+ </tr>
136
+ <tr valign="top">
137
+ <th scope="row"><?php _e( "Any question about it", 'import-users-from-csv-with-meta' ); ?></th>
138
+ <td>
139
+ <ul style="list-style:disc outside none; margin-left:2em;">
140
+ <li><?php _e( 'Free support (in WordPress forums):', 'import-users-from-csv-with-meta' ); ?> <a href="https://wordpress.org/support/plugin/import-users-from-csv-with-meta">https://wordpress.org/support/plugin/import-users-from-csv-with-meta</a>.</li>
141
+ <li><?php _e( 'Premium support (with a quote):', 'import-users-from-csv-with-meta' ); ?> <a href="mailto:contacto@codection.com">contacto@codection.com</a>.</li>
142
+ </ul>
143
+ </td>
144
+ </tr>
145
+ <tr valign="top">
146
+ <th scope="row"><?php _e( 'Example', 'import-users-from-csv-with-meta' ); ?></th>
147
+ <td><?php _e( 'Download this', 'import-users-from-csv-with-meta' ); ?> <a href="<?php echo plugins_url() . "/import-users-from-csv-with-meta/test.csv"; ?>">.csv <?php _e('file','import-users-from-csv-with-meta'); ?></a> <?php _e( 'to test', 'import-users-from-csv-with-meta' ); ?></td>
148
+ </tr>
149
+ </tbody>
150
+ </table>
151
+ <br/>
152
+ <div style="width:775px;margin:0 auto"><img src="<?php echo plugins_url() . "/import-users-from-csv-with-meta/csv_example.png"; ?>"/></div>
153
+ <?php
154
+ }
155
+ }
trunk/classes/donate.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Donate{
6
+ public static function message(){
7
+ global $acui_url_plugin;
8
+ ?>
9
+ <div class="postbox">
10
+ <h3 class="hndle"><span>&nbsp;<?php _e( 'Do you like it?', 'import-users-from-csv-with-meta' ); ?></span></h3>
11
+
12
+ <div class="inside" style="display: block;">
13
+ <img src="<?php echo $acui_url_plugin; ?>icon_coffee.png" alt="<?php _e( 'buy me a coffee', 'import-users-from-csv-with-meta' ); ?>" style=" margin: 5px; float:left;">
14
+ <p><?php _e( 'Hi! we are', 'import-users-from-csv-with-meta'); ?> <a href="https://twitter.com/fjcarazo" target="_blank" title="Javier Carazo">Javier Carazo</a> <?php _e( 'and all the team of', 'import-users-from-csv-with-meta' ); ?> <a href="http://codection.com">Codection</a>, <?php _e("developers of this plugin.", 'import-users-from-csv-with-meta' ); ?></p>
15
+ <p><?php _e( 'We have been spending many hours to develop this plugin and answering questions in the forum to give you the best support. <br>If you like and use this plugin, you can <strong>buy us a cup of coffee</strong>.', 'import-users-from-csv-with-meta' ); ?></p>
16
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
17
+ <input type="hidden" name="cmd" value="_s-xclick">
18
+ <input type="hidden" name="hosted_button_id" value="QPYVWKJG4HDGG">
19
+ <input type="image" src="https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="<?php _e('PayPal – The safer, easier way to pay online.', 'import-users-from-csv-with-meta' ); ?>">
20
+ <img alt="" border="0" src="https://www.paypalobjects.com/es_ES/i/scr/pixel.gif" width="1" height="1">
21
+ </form>
22
+ <div style="clear:both;"></div>
23
+ </div>
24
+
25
+ <h3 class="hndle"><span>&nbsp;<?php _e( 'Or if you prefer, you can also help us becoming a Patreon:', 'import-users-from-csv-with-meta' ); ?></span></h3>
26
+
27
+ <div class="inside acui" style="display: block;">
28
+ <a class="patreon" color="primary" type="button" name="become-a-patron" data-tag="become-patron-button" href="https://www.patreon.com/bePatron?c=1741454" role="button">
29
+ <div class="oosjif-1 jFPfxp"><span>Become a patron</span></div>
30
+ </a>
31
+ </div>
32
+ </div>
33
+ <?php
34
+ }
35
+ }
trunk/classes/email-options.php ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Email_Options{
6
+ function __construct(){
7
+ add_action( 'admin_enqueue_scripts', array( $this, 'load_scripts' ), 10, 1 );
8
+ add_action( 'wp_ajax_acui_mail_options_remove_attachment', array( $this, 'ajax_remove_attachment' ) );
9
+ }
10
+
11
+ public static function admin_gui(){
12
+ $from_email = get_option( "acui_mail_from" );
13
+ $from_name = get_option( "acui_mail_from_name" );
14
+ $body_mail = get_option( "acui_mail_body" );
15
+ $subject_mail = get_option( "acui_mail_subject" );
16
+ $template_id = get_option( "acui_mail_template_id" );
17
+ $attachment_id = get_option( "acui_mail_attachment_id" );
18
+ $enable_email_templates = get_option( "acui_enable_email_templates" );
19
+ $automattic_wordpress_email = get_option( "acui_automatic_wordpress_email" );
20
+ ?>
21
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
22
+ <h3><?php _e('Mail options','import-users-from-csv-with-meta'); ?></h3>
23
+
24
+ <table class="optiontable form-table">
25
+ <tbody>
26
+ <tr valign="top">
27
+ <th scope="row"><?php _e( 'WordPress automatic emails users updated', 'import-users-from-csv-with-meta' ); ?></th>
28
+ <td>
29
+ <fieldset>
30
+ <legend class="screen-reader-text">
31
+ <span><?php _e( 'Send automattic WordPress emails?', 'import-users-from-csv-with-meta' ); ?></span>
32
+ </legend>
33
+ <label for="automattic_wordpress_email">
34
+ <select name="automattic_wordpress_email" id="automattic_wordpress_email">
35
+ <option <?php if( $automattic_wordpress_email == 'false' ) echo "selected='selected'"; ?> value="false"><?php _e( "Deactivate WordPress automattic email when an user is updated or his password is changed", 'import-users-from-csv-with-meta' ) ;?></option>
36
+ <option <?php if( $automattic_wordpress_email == 'true' ) echo "selected='selected'"; ?> value="true"><?php _e( 'Activate WordPress automattic email when an user is updated or his password is changed', 'import-users-from-csv-with-meta' ); ?></option>
37
+ </select>
38
+ <span class="description"><? _e( "When you update an user or change his password, WordPress prepare and send automattic email, you can deactivate it here.", 'import-users-from-csv-with-meta' ); ?></span>
39
+ </label>
40
+ </fieldset>
41
+ </td>
42
+ </tr>
43
+ <tr valign="top">
44
+ <th scope="row"><?php _e( 'Enable mail templates:', 'import-users-from-csv-with-meta' ); ?></th>
45
+ <td>
46
+ <fieldset>
47
+ <legend class="screen-reader-text">
48
+ <span><?php _e( 'Do you want to enable mail templates?', 'import-users-from-csv-with-meta' ); ?></span>
49
+ </legend>
50
+ <label for="enable_email_templates">
51
+ <input id="enable_email_templates" name="enable_email_templates" value="yes" type="checkbox" <?php checked( $enable_email_templates ); ?>>
52
+ <span class="description"><? _e( "If you activate it, a new option in the menu will be created to store and manage mail templates, instead of using only the next one.", 'import-users-from-csv-with-meta' ); ?></span>
53
+ </label>
54
+ </fieldset>
55
+ </td>
56
+ </tr>
57
+ </tbody>
58
+ </table>
59
+
60
+ <?php if( $enable_email_templates && wp_count_posts( 'acui_email_template' )->publish > 0 ): ?>
61
+ <h3><?php _e( 'Load custom email from email templates', 'import-users-from-csv-with-meta' ); ?></h3>
62
+ <?php wp_dropdown_pages( array( 'id' => 'email_template_selected', 'post_type' => 'acui_email_template', 'selected' => $template_id ) ); ?>
63
+ <input id="load_email_template" class="button-primary" type="button" value="<?php _e( "Load subject, content and attachment from this email template", 'import-users-from-csv-with-meta' ); ?>"/>
64
+ <?php endif; ?>
65
+
66
+ <h3><?php _e( 'Customize the email that can be sent when importing users', 'import-users-from-csv-with-meta' ); ?></h3>
67
+
68
+ <p><?php _e( 'Mail subject :', 'import-users-from-csv-with-meta' ); ?><input name="subject_mail" size="100" value="<?php echo $subject_mail; ?>" id="title" autocomplete="off" type="text"></p>
69
+ <?php wp_editor( $body_mail, 'body_mail'); ?>
70
+ <input type="hidden" id="template_id" name="template_id" value="<?php echo $template_id; ?>"/>
71
+
72
+ <fieldset>
73
+ <div>
74
+ <label for="email_template_attachment_file"><?php _e( 'Attachment', 'import-users-from-csv-with-meta' )?></label><br>
75
+ <input type="url" class="large-text" name="email_template_attachment_file" id="email_template_attachment_file" value="<?php echo wp_get_attachment_url( $attachment_id ); ?>" readonly/><br>
76
+ <input type="hidden" name="email_template_attachment_id" id="email_template_attachment_id" value="<?php echo $attachment_id ?>"/>
77
+ <button type="button" class="button" id="acui_email_option_upload_button"><?php _e( 'Upload file', 'import-users-from-csv-with-meta' )?></button>
78
+ <button type="button" class="button" id="acui_email_option_remove_upload_button"><?php _e( 'Remove file', 'import-users-from-csv-with-meta' )?></button>
79
+ </div>
80
+ </fieldset>
81
+
82
+ <br/>
83
+ <input class="button-primary" type="submit" value="<?php _e( 'Save email template and options', 'import-users-from-csv-with-meta'); ?>" id="save_mail_template_options"/>
84
+
85
+ <?php ACUI_Email_Template::email_templates_edit_form_after_editor(); ?>
86
+
87
+ </form>
88
+ <?php
89
+ }
90
+
91
+ function load_scripts( $hook ) {
92
+ global $typenow, $acui_url_plugin;
93
+
94
+ if( $typenow == 'acui_email_template' || $hook == 'tools_page_acui' ) {
95
+ wp_enqueue_media();
96
+ wp_register_script( 'email-template-attachment-admin', $acui_url_plugin . '/assets/email-template-attachment-admin.js', array( 'jquery' ) );
97
+ wp_localize_script( 'email-template-attachment-admin', 'email_template_attachment_admin',
98
+ array(
99
+ 'title' => __( 'Choose or upload file', 'import-users-from-csv-with-meta' ),
100
+ 'button' => __( 'Use this file', 'import-users-from-csv-with-meta' ),
101
+ 'nonce' => wp_create_nonce( "codection-security" )
102
+ )
103
+ );
104
+ wp_enqueue_script( 'email-template-attachment-admin' );
105
+ }
106
+ }
107
+
108
+ function ajax_remove_attachment(){
109
+ check_ajax_referer( 'codection-security', 'security' );
110
+ update_option( "acui_mail_attachment_id", "" );
111
+ }
112
+ }
113
+
114
+ new ACUI_Email_Options();
trunk/classes/email-templates.php ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Email_Template{
6
+ function __construct(){
7
+ add_action( 'init', array( $this, 'cpt_email_template' ), 0 );
8
+ add_action( 'edit_form_after_editor', array( $this, 'email_templates_edit_form_after_editor' ), 10, 1 );
9
+ add_action( 'wp_ajax_acui_refresh_enable_email_templates', array( $this, 'refresh_enable_email_templates' ) );
10
+ add_action( 'wp_ajax_acui_email_template_selected', array( $this, 'email_template_selected' ) );
11
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
12
+ add_action( 'save_post', array( $this, 'save_post' ) );
13
+ }
14
+
15
+ function cpt_email_template() {
16
+ if( !get_option( 'acui_enable_email_templates' ) )
17
+ return;
18
+
19
+ $labels = array(
20
+ 'name' => _x( 'Email templates (Import Users From CSV With Meta)', 'Post Type General Name', 'import-users-from-csv-with-meta' ),
21
+ 'singular_name' => _x( 'Email template (Import Users From CSV With Meta)', 'Post Type Singular Name', 'import-users-from-csv-with-meta' ),
22
+ 'menu_name' => __( 'Email templates (Import Users)', 'import-users-from-csv-with-meta' ),
23
+ 'name_admin_bar' => __( 'Email templates (Import Users From CSV With Meta)', 'import-users-from-csv-with-meta' ),
24
+ 'archives' => __( 'Item Archives', 'import-users-from-csv-with-meta' ),
25
+ 'attributes' => __( 'Item Attributes', 'import-users-from-csv-with-meta' ),
26
+ 'parent_item_colon' => __( 'Parent Item:', 'import-users-from-csv-with-meta' ),
27
+ 'all_items' => __( 'All email template', 'import-users-from-csv-with-meta' ),
28
+ 'add_new_item' => __( 'Add new email template', 'import-users-from-csv-with-meta' ),
29
+ 'add_new' => __( 'Add new email template', 'import-users-from-csv-with-meta' ),
30
+ 'new_item' => __( 'New email template', 'import-users-from-csv-with-meta' ),
31
+ 'edit_item' => __( 'Edit email template', 'import-users-from-csv-with-meta' ),
32
+ 'update_item' => __( 'Update email template', 'import-users-from-csv-with-meta' ),
33
+ 'view_item' => __( 'View email template', 'import-users-from-csv-with-meta' ),
34
+ 'view_items' => __( 'View email templates', 'import-users-from-csv-with-meta' ),
35
+ 'search_items' => __( 'Search email template', 'import-users-from-csv-with-meta' ),
36
+ 'not_found' => __( 'Not found', 'import-users-from-csv-with-meta' ),
37
+ 'not_found_in_trash' => __( 'Not found in Trash', 'import-users-from-csv-with-meta' ),
38
+ 'featured_image' => __( 'Featured Image', 'import-users-from-csv-with-meta' ),
39
+ 'set_featured_image' => __( 'Set featured image', 'import-users-from-csv-with-meta' ),
40
+ 'remove_featured_image' => __( 'Remove featured image', 'import-users-from-csv-with-meta' ),
41
+ 'use_featured_image' => __( 'Use as featured image', 'import-users-from-csv-with-meta' ),
42
+ 'insert_into_item' => __( 'Insert into email template', 'import-users-from-csv-with-meta' ),
43
+ 'uploaded_to_this_item' => __( 'Uploaded to this email template', 'import-users-from-csv-with-meta' ),
44
+ 'items_list' => __( 'Items list', 'import-users-from-csv-with-meta' ),
45
+ 'items_list_navigation' => __( 'Email template list navigation', 'import-users-from-csv-with-meta' ),
46
+ 'filter_items_list' => __( 'Filter email template list', 'import-users-from-csv-with-meta' ),
47
+ );
48
+ $args = array(
49
+ 'label' => __( 'Mail template (Import Users From CSV With Meta)', 'import-users-from-csv-with-meta' ),
50
+ 'description' => __( 'Mail templates for Import Users From CSV With Meta', 'import-users-from-csv-with-meta' ),
51
+ 'labels' => $labels,
52
+ 'supports' => array( 'title', 'editor' ),
53
+ 'hierarchical' => true,
54
+ 'public' => false,
55
+ 'show_ui' => true,
56
+ 'show_in_menu' => true,
57
+ 'menu_position' => 100,
58
+ 'menu_icon' => 'dashicons-email',
59
+ 'show_in_admin_bar' => true,
60
+ 'show_in_nav_menus' => false,
61
+ 'can_export' => true,
62
+ 'has_archive' => false,
63
+ 'exclude_from_search' => true,
64
+ 'publicly_queryable' => false,
65
+ 'rewrite' => false,
66
+ 'capability_type' => 'page',
67
+ );
68
+ register_post_type( 'acui_email_template', $args );
69
+
70
+ }
71
+
72
+ public static function email_templates_edit_form_after_editor( $post = "" ){
73
+ if( !empty( $post ) && $post->post_type != 'acui_email_template' )
74
+ return;
75
+ ?>
76
+ <p><?php _e( 'You can use', 'import-users-from-csv-with-meta' ); ?></p>
77
+ <ul style="list-style-type:disc; margin-left:2em;">
78
+ <li>**username** = <?php _e( 'username to login', 'import-users-from-csv-with-meta' ); ?></li>
79
+ <li>**password** = <?php _e( 'user password', 'import-users-from-csv-with-meta' ); ?></li>
80
+ <li>**loginurl** = <?php _e( 'current site login url', 'import-users-from-csv-with-meta' ); ?></li>
81
+ <li>**lostpasswordurl** = <?php _e( 'lost password url', 'import-users-from-csv-with-meta' ); ?></li>
82
+ <li>**passwordreseturl** = <?php _e( 'password reset url', 'import-users-from-csv-with-meta' ); ?></li>
83
+ <li>**email** = <?php _e( 'user email', 'import-users-from-csv-with-meta' ); ?></li>
84
+ <li><?php _e( "You can also use any WordPress user standard field or an own metadata, if you have used it in your CSV. For example, if you have a first_name column, you could use **first_name** or any other meta_data like **my_custom_meta**", 'import-users-from-csv-with-meta' ) ;?></li>
85
+ </ul>
86
+ <?php
87
+ }
88
+
89
+ function refresh_enable_email_templates(){
90
+ check_ajax_referer( 'codection-security', 'security' );
91
+ update_option( 'acui_enable_email_templates', ( $_POST[ 'enable' ] == "true" ) );
92
+ die();
93
+ }
94
+
95
+ function email_template_selected(){
96
+ check_ajax_referer( 'codection-security', 'security' );
97
+ $email_template = get_post( intval( $_POST['email_template_selected'] ) );
98
+ $attachment_id = get_post_meta( $email_template->ID, 'email_template_attachment_id', true );
99
+
100
+ echo json_encode( array(
101
+ 'id' => $email_template->ID,
102
+ 'title' => $email_template->post_title,
103
+ 'content' => wpautop( $email_template->post_content ),
104
+ 'attachment_id' => $attachment_id,
105
+ 'attachment_url' => wp_get_attachment_url( $attachment_id ),
106
+ ) );
107
+
108
+ die();
109
+ }
110
+
111
+ function add_meta_boxes(){
112
+ add_meta_box( 'email_template_attachments',
113
+ __( 'Attachment', 'import-users-from-csv-with-meta' ),
114
+ array( $this, 'email_template_attachments' ),
115
+ 'acui_email_template',
116
+ 'side',
117
+ 'core' );
118
+ }
119
+
120
+ public function email_template_attachments( $post ){
121
+ $email_template_attachment_id = get_post_meta( $post->ID, 'email_template_attachment_id', true );
122
+ ?>
123
+ <fieldset>
124
+ <div>
125
+ <label for="email_template_attachment_file"><?php _e( 'Attachment', 'import-users-from-csv-with-meta' )?></label><br>
126
+ <input type="url" class="large-text" name="email_template_attachment_file" id="email_template_attachment_file" value="<?php echo wp_get_attachment_url( $email_template_attachment_id ); ?>" readonly/><br>
127
+ <input type="hidden" name="email_template_attachment_id" id="email_template_attachment_id" value="<?php echo $email_template_attachment_id ?>"/>
128
+ <button type="button" class="button" id="acui_email_template_upload_button"><?php _e( 'Upload file', 'import-users-from-csv-with-meta' )?></button>
129
+ <button type="button" class="button" id="acui_email_template_remove_upload_button"><?php _e( 'Remove file', 'import-users-from-csv-with-meta' )?></button>
130
+ </div>
131
+ </fieldset>
132
+ <?php
133
+ wp_nonce_field( 'acui_email_template_attachment', 'acui_email_template_attachment' );
134
+ }
135
+
136
+ function save_post( $post_id ){
137
+ if( !isset( $_POST['acui_email_template_attachment'] ) )
138
+ return $post_id;
139
+
140
+ if( !wp_verify_nonce( $_POST['acui_email_template_attachment'], 'acui_email_template_attachment' ) ) {
141
+ return $post_id;
142
+ }
143
+
144
+ if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
145
+ return $post_id;
146
+ }
147
+
148
+ if( 'acui_email_template' != $_POST['post_type'] ) {
149
+ return $post_id;
150
+ }
151
+
152
+ update_post_meta( $post_id, 'email_template_attachment_id', intval( $_POST['email_template_attachment_id'] ) );
153
+ }
154
+ }
155
+
156
+ new ACUI_Email_Template();
trunk/classes/frontend.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Frontend{
6
+ public static function admin_gui(){
7
+ $send_mail_frontend = get_option( "acui_frontend_send_mail" );
8
+ $send_mail_updated_frontend = get_option( "acui_frontend_send_mail_updated" );
9
+ $delete_users_frontend = get_option( "acui_frontend_delete_users" );
10
+ $delete_users_assign_posts_frontend = get_option( "acui_frontend_delete_users_assign_posts" );
11
+ $change_role_not_present_frontend = get_option( "acui_frontend_change_role_not_present" );
12
+ $change_role_not_present_role_frontend = get_option( "acui_frontend_change_role_not_present_role" );
13
+ $role = get_option( "acui_frontend_role" );
14
+ $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
15
+
16
+ if( empty( $send_mail_frontend ) )
17
+ $send_mail_frontend = false;
18
+
19
+ if( empty( $send_mail_updated_frontend ) )
20
+ $send_mail_updated_frontend = false;
21
+ ?>
22
+ <h3><?php _e( "Execute an import of users in the frontend", 'import-users-from-csv-with-meta' ); ?></h3>
23
+
24
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8">
25
+ <table class="form-table">
26
+ <tbody>
27
+
28
+ <tr class="form-field">
29
+ <th scope="row"><label for=""><?php _e( 'Use this shortcode in any page or post', 'import-users-from-csv-with-meta' ); ?></label></th>
30
+ <td>
31
+ <pre>[import-users-from-csv-with-meta]</pre>
32
+ <input class="button-primary" type="button" id="copy_to_clipboard" value="<?php _e( 'Copy to clipboard', 'import-users-from-csv-with-meta'); ?>"/>
33
+ </td>
34
+ </tr>
35
+
36
+ <tr class="form-field form-required">
37
+ <th scope="row"><label for="role"><?php _e( 'Role', 'import-users-from-csv-with-meta' ); ?></label></th>
38
+ <td>
39
+ <select id="role-frontend" name="role-frontend">
40
+ <?php
41
+ if( $role == '' )
42
+ echo "<option selected='selected' value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
43
+ else
44
+ echo "<option value=''>" . __( 'Disable role assignement in frontend import', 'import-users-from-csv-with-meta' ) . "</option>";
45
+
46
+ $list_roles = acui_get_editable_roles();
47
+ foreach ($list_roles as $key => $value) {
48
+ if($key == $role)
49
+ echo "<option selected='selected' value='$key'>$value</option>";
50
+ else
51
+ echo "<option value='$key'>$value</option>";
52
+ }
53
+ ?>
54
+ </select>
55
+ <p class="description"><?php _e( 'Which role would be used to import users?', 'import-users-from-csv-with-meta' ); ?></p>
56
+ </td>
57
+ </tr>
58
+
59
+ <tr class="form-field form-required">
60
+ <th scope="row"><label for="send-mail-frontend"><?php _e( 'Send mail when using frontend import?', 'import-users-from-csv-with-meta' ); ?></label></th>
61
+ <td>
62
+ <input type="checkbox" name="send-mail-frontend" value="yes" <?php if( $send_mail_frontend == true ) echo "checked='checked'"; ?>/>
63
+ </td>
64
+ </tr>
65
+
66
+ <tr class="form-field form-required">
67
+ <th scope="row"><label for="send-mail-updated-frontend"><?php _e( 'Send mail also to users that are being updated?', 'import-users-from-csv-with-meta' ); ?></label></th>
68
+ <td>
69
+ <input type="checkbox" name="send-mail-updated-frontend" value="yes" <?php if( $send_mail_updated_frontend == true ) echo "checked='checked'"; ?>/>
70
+ </td>
71
+ </tr>
72
+ </tbody>
73
+ </table>
74
+
75
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
76
+ <table class="form-table">
77
+ <tbody>
78
+
79
+ <tr class="form-field form-required">
80
+ <th scope="row"><label for="delete-users-frontend"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
81
+ <td>
82
+ <div style="float:left; margin-top: 10px;">
83
+ <input type="checkbox" name="delete-users-frontend" value="yes" <?php if( $delete_users_frontend == true ) echo "checked='checked'"; ?>/>
84
+ </div>
85
+ <div style="margin-left:25px;">
86
+ <select id="delete-users-assign-posts-frontend" name="delete-users-assign-posts-frontend">
87
+ <?php
88
+ if( $delete_users_assign_posts_frontend == '' )
89
+ echo "<option selected='selected' value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
90
+ else
91
+ echo "<option value=''>" . __( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ) . "</option>";
92
+
93
+ $blogusers = get_users();
94
+
95
+ foreach ( $blogusers as $bloguser ) {
96
+ if( $bloguser->ID == $delete_users_assign_posts_frontend )
97
+ echo "<option selected='selected' value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
98
+ else
99
+ echo "<option value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
100
+ }
101
+ ?>
102
+ </select>
103
+ <p class="description"><?php _e( 'After delete users, we can choose if we want to assign their posts to another user. Please do not delete them or posts will be deleted.', 'import-users-from-csv-with-meta' ); ?></p>
104
+ </div>
105
+ </td>
106
+ </tr>
107
+
108
+ <tr class="form-field form-required">
109
+ <th scope="row"><label for="change-role-not-present-frontend"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
110
+ <td>
111
+ <div style="float:left; margin-top: 10px;">
112
+ <input type="checkbox" name="change-role-not-present-frontend" value="yes" <?php checked( $change_role_not_present_frontend ); ?> />
113
+ </div>
114
+ <div style="margin-left:25px;">
115
+ <select id="change-role-not-present-role-frontend" name="change-role-not-present-role-frontend">
116
+ <?php
117
+ $list_roles = acui_get_editable_roles();
118
+ foreach ($list_roles as $key => $value):
119
+ ?>
120
+ <option value='<?php echo $key; ?>' <?php selected( $change_role_not_present_role_frontend, $key ); ?>><?php echo $value; ?></option>
121
+ <?php endforeach; ?>
122
+ </select>
123
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
124
+ </div>
125
+ </td>
126
+ </tr>
127
+ </tbody>
128
+ </table>
129
+
130
+ <input class="button-primary" type="submit" value="<?php _e( 'Save frontend import options', 'import-users-from-csv-with-meta'); ?>"/>
131
+ </form>
132
+
133
+ <script>
134
+ jQuery( document ).ready( function( $ ){
135
+ $( '#copy_to_clipboard' ).click( function(){
136
+ var $temp = $("<input>");
137
+ $("body").append($temp);
138
+ $temp.val( '[import-users-from-csv-with-meta]' ).select();
139
+ document.execCommand("copy");
140
+ $temp.remove();
141
+ } );
142
+ });
143
+ </script>
144
+ <?php
145
+ }
146
+ }
trunk/classes/help.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Help{
6
+ public static function message(){
7
+ ?>
8
+ <div class="postbox">
9
+ <h3 class="hndle"><span>&nbsp;<?php _e( 'Need help with WordPress or WooCommerce?', 'import-users-from-csv-with-meta' ); ?></span></h3>
10
+
11
+ <div class="inside" style="display: block;">
12
+ <p><?php _e( 'Hi! we are', 'import-users-from-csv-with-meta' ); ?> <a href="https://twitter.com/fjcarazo" target="_blank" title="Javier Carazo">Javier Carazo</a> <?php _e( 'and the team of', 'import-users-from-csv-with-meta' ) ?> <a href="http://codection.com">Codection</a>, <?php _e( 'developers of this plugin.', 'import-users-from-csv-with-meta' ); ?></p>
13
+ <p><?php _e( 'We work everyday with WordPress and WooCommerce, if you need help hire us, send us a message to', 'import-users-from-csv-with-meta' ); ?> <a href="mailto:contacto@codection.com">contacto@codection.com</a>.</p>
14
+ <div style="clear:both;"></div>
15
+ </div>
16
+ </div>
17
+ <?php
18
+ }
19
+ }
trunk/classes/homepage.php ADDED
@@ -0,0 +1,321 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class ACUI_Homepage{
6
+ public static function admin_gui(){
7
+ $args_old_csv = array( 'post_type'=> 'attachment', 'post_mime_type' => 'text/csv', 'post_status' => 'inherit', 'posts_per_page' => -1 );
8
+ $old_csv_files = new WP_Query( $args_old_csv );
9
+
10
+ acui_check_options();
11
+ ?>
12
+ <div class="wrap acui">
13
+
14
+ <?php if( $old_csv_files->found_posts > 0 ): ?>
15
+ <div class="postbox">
16
+ <div title="<?php _e( 'Click to open/close', 'import-users-from-csv-with-meta' ); ?>" class="handlediv">
17
+ <br>
18
+ </div>
19
+
20
+ <h3 class="hndle"><span>&nbsp;&nbsp;&nbsp;<?php _e( 'Old CSV files uploaded', 'import-users-from-csv-with-meta' ); ?></span></h3>
21
+
22
+ <div class="inside" style="display: block;">
23
+ <p><?php _e( 'For security reasons you should delete this files, probably they would be visible in the Internet if a bot or someone discover the URL. You can delete each file or maybe you want delete all CSV files you have uploaded:', 'import-users-from-csv-with-meta' ); ?></p>
24
+ <input type="button" value="<?php _e( 'Delete all CSV files uploaded', 'import-users-from-csv-with-meta' ); ?>" id="bulk_delete_attachment" style="float:right;" />
25
+ <ul>
26
+ <?php while($old_csv_files->have_posts()) :
27
+ $old_csv_files->the_post();
28
+
29
+ if( get_the_date() == "" )
30
+ $date = "undefined";
31
+ else
32
+ $date = get_the_date();
33
+ ?>
34
+ <li><a href="<?php echo wp_get_attachment_url( get_the_ID() ); ?>"><?php the_title(); ?></a> <?php _e( 'uploaded on', 'import-users-from-csv-with-meta' ) . ' ' . $date; ?> <input type="button" value="<?php _e( 'Delete', 'import-users-from-csv-with-meta' ); ?>" class="delete_attachment" attach_id="<?php the_ID(); ?>" /></li>
35
+ <?php endwhile; ?>
36
+ <?php wp_reset_postdata(); ?>
37
+ </ul>
38
+ <div style="clear:both;"></div>
39
+ </div>
40
+ </div>
41
+ <?php endif; ?>
42
+
43
+ <div id='message' class='updated'><?php _e( 'File must contain at least <strong>2 columns: username and email</strong>. These should be the first two columns and it should be placed <strong>in this order: username and email</strong>. If there are more columns, this plugin will manage it automatically.', 'import-users-from-csv-with-meta' ); ?></div>
44
+ <div id='message-password' class='error'><?php _e( 'Please, read carefully how <strong>passwords are managed</strong> and also take note about capitalization, this plugin is <strong>case sensitive</strong>.', 'import-users-from-csv-with-meta' ); ?></div>
45
+
46
+ <div>
47
+ <h2><?php _e( 'Import users from CSV','import-users-from-csv-with-meta' ); ?></h2>
48
+ </div>
49
+
50
+ <div style="clear:both;"></div>
51
+
52
+ <div class="main_bar">
53
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8" onsubmit="return check();">
54
+ <h2><?php _e( 'General', 'import-users-from-csv-with-meta'); ?></h2>
55
+ <table class="form-table">
56
+ <tbody>
57
+
58
+ <tr class="form-field form-required">
59
+ <th scope="row"><label><?php _e( 'CSV file <span class="description">(required)</span></label>', 'import-users-from-csv-with-meta' ); ?></th>
60
+ <td>
61
+ <div id="upload_file">
62
+ <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
63
+ <?php _e( '<em>or you can choose directly a file from your host,', 'import-users-from-csv-with-meta' ) ?> <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ) ?></a>.</em>
64
+ </div>
65
+ <div id="introduce_path" style="display:none;">
66
+ <input placeholder="<?php _e( 'You have to introduce the path to file, i.e.:' ,'import-users-from-csv-with-meta' ); ?><?php $upload_dir = wp_upload_dir(); echo $upload_dir["path"]; ?>/test.csv" type="text" name="path_to_file" id="path_to_file" value="<?php echo dirname( __FILE__ ); ?>/test.csv" style="width:70%;" />
67
+ <em><?php _e( 'or you can upload it directly from your PC', 'import-users-from-csv-with-meta' ); ?>, <a href="#" class="toggle_upload_path"><?php _e( 'click here', 'import-users-from-csv-with-meta' ); ?></a>.</em>
68
+ </div>
69
+ </td>
70
+ </tr>
71
+
72
+ <tr class="form-field">
73
+ <th scope="row"><label for="role"><?php _e( 'Default role', 'import-users-from-csv-with-meta' ); ?></label></th>
74
+ <td>
75
+ <?php
76
+ $list_roles = acui_get_editable_roles();
77
+
78
+ foreach ($list_roles as $key => $value) {
79
+ if($key == "subscriber")
80
+ echo "<label style='margin-right:5px;'><input name='role[]' type='checkbox' checked='checked' value='$key'/>$value</label>";
81
+ else
82
+ echo "<label style='margin-right:5px;'><input name='role[]' type='checkbox' value='$key'/>$value</label>";
83
+ }
84
+ ?>
85
+
86
+ <p class="description"><?php _e( 'You can also import roles from a CSV column. Please read documentation tab to see how it can be done. If you choose more than one role, the roles would be assigned correctly but you should use some plugin like <a href="https://wordpress.org/plugins/user-role-editor/">User Role Editor</a> to manage them.', 'import-users-from-csv-with-meta' ); ?></p>
87
+ </td>
88
+ </tr>
89
+
90
+ <tr class="form-field form-required">
91
+ <th scope="row"><label><?php _e( 'What should the plugin do with empty cells?', 'import-users-from-csv-with-meta' ); ?></label></th>
92
+ <td>
93
+ <select name="empty_cell_action">
94
+ <option value="leave"><?php _e( 'Leave the old value for this metadata', 'import-users-from-csv-with-meta' ); ?></option>
95
+ <option value="delete"><?php _e( 'Delete the metadata', 'import-users-from-csv-with-meta' ); ?></option>
96
+ </select>
97
+ </td>
98
+ </tr>
99
+
100
+ <tr class="form-field">
101
+ <th scope="row"><label for="user_login"><?php _e( 'Send mail', 'import-users-from-csv-with-meta' ); ?></label></th>
102
+ <td>
103
+ <p>
104
+ <?php _e( 'Do you wish to send a mail with credentials and other data?', 'import-users-from-csv-with-meta' ); ?>
105
+ <input type="checkbox" name="sends_email" value="yes" <?php if( get_option( 'acui_manually_send_mail' ) ): ?> checked="checked" <?php endif; ?>>
106
+ </p>
107
+ <p>
108
+ <?php _e( 'Do you wish to send this mail also to users that are being updated? (not only to the one which are being created)', 'import-users-from-csv-with-meta' ); ?>
109
+ <input type="checkbox" name="send_email_updated" value="yes" <?php if( get_option( 'acui_manually_send_mail_updated' ) ): ?> checked="checked" <?php endif; ?>>
110
+ </p>
111
+ </td>
112
+ </tr>
113
+
114
+ </tbody>
115
+ </table>
116
+
117
+ <h2><?php _e( 'Update users', 'import-users-from-csv-with-meta'); ?></h2>
118
+
119
+ <table class="form-table">
120
+ <tbody>
121
+ <tr class="form-field form-required">
122
+ <th scope="row"><label><?php _e( 'Update existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
123
+ <td>
124
+ <select name="update_existing_users">
125
+ <option value="yes"><?php _e( 'Yes', 'import-users-from-csv-with-meta' ); ?></option>
126
+ <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
127
+ </select>
128
+ </td>
129
+ </tr>
130
+
131
+ <tr class="form-field form-required">
132
+ <th scope="row"><label><?php _e( 'Update roles for existing users?', 'import-users-from-csv-with-meta' ); ?></label></th>
133
+ <td>
134
+ <select name="update_roles_existing_users">
135
+ <option value="no"><?php _e( 'No', 'import-users-from-csv-with-meta' ); ?></option>
136
+ <option value="yes"><?php _e( 'Yes, update and override existing roles', 'import-users-from-csv-with-meta' ); ?></option>
137
+ <option value="yes_no_override"><?php _e( 'Yes, add new roles and not override existing ones', 'import-users-from-csv-with-meta' ); ?></option>
138
+ </select>
139
+ </td>
140
+ </tr>
141
+ </tbody>
142
+ </table>
143
+
144
+ <h2><?php _e( 'Users not present in CSV file', 'import-users-from-csv-with-meta'); ?></h2>
145
+
146
+ <table class="form-table">
147
+ <tbody>
148
+
149
+ <tr class="form-field form-required">
150
+ <th scope="row"><label for="delete_users"><?php _e( 'Delete users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
151
+ <td>
152
+ <div style="float:left; margin-top: 10px;">
153
+ <input type="checkbox" name="delete_users" value="yes"/>
154
+ </div>
155
+ <div style="margin-left:25px;">
156
+ <select id="delete_users_assign_posts" name="delete_users_assign_posts">
157
+ <option value=''><?php _e( 'Delete posts of deled users without assing to any user', 'import-users-from-csv-with-meta' ); ?></option>
158
+ <?php
159
+ $blogusers = get_users();
160
+
161
+ foreach ( $blogusers as $bloguser ) {
162
+ echo "<option value='{$bloguser->ID}'>{$bloguser->display_name}</option>";
163
+ }
164
+ ?>
165
+ </select>
166
+ <p class="description"><?php _e( 'After delete users, we can choose if we want to assign their posts to another user. Please do not delete them or posts will be deleted.', 'import-users-from-csv-with-meta' ); ?></p>
167
+ </div>
168
+ </td>
169
+ </tr>
170
+
171
+ <tr class="form-field form-required">
172
+ <th scope="row"><label for="change_role_not_present"><?php _e( 'Change role of users that are not present in the CSV?', 'import-users-from-csv-with-meta' ); ?></label></th>
173
+ <td>
174
+ <div style="float:left; margin-top: 10px;">
175
+ <input type="checkbox" name="change_role_not_present" value="yes"/>
176
+ </div>
177
+ <div style="margin-left:25px;">
178
+ <select id="change_role_not_present_role" name="change_role_not_present_role">
179
+ <?php
180
+ $list_roles = acui_get_editable_roles();
181
+
182
+ foreach ($list_roles as $key => $value) {
183
+ echo "<option value='$key'>$value</option>";
184
+ }
185
+ ?>
186
+ </select>
187
+ <p class="description"><?php _e( 'After import users which is not present in the CSV and can be changed to a different role.', 'import-users-from-csv-with-meta' ); ?></p>
188
+ </div>
189
+ </td>
190
+ </tr>
191
+
192
+ </tbody>
193
+ </table>
194
+
195
+ <?php do_action( 'acui_tab_import_before_import_button' ); ?>
196
+
197
+ <?php wp_nonce_field( 'acui-import', 'acui-nonce' ); ?>
198
+
199
+ <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="<?php _e( 'Start importing', 'import-users-from-csv-with-meta' ); ?>"/>
200
+ </form>
201
+ </div>
202
+
203
+ <div class="sidebar">
204
+ <div class="sidebar_section become_patreon">
205
+ <a class="patreon" color="primary" type="button" name="become-a-patron" data-tag="become-patron-button" href="https://www.patreon.com/bePatron?c=1741454" role="button">
206
+ <div><span><?php _e( 'Become a patron', 'import-users-from-csv-with-meta'); ?></span></div>
207
+ </a>
208
+ </div>
209
+
210
+ <?php if( substr( get_locale(), 0, 2 ) == 'es' ): ?>
211
+ <div class="sidebar_section" id="webempresa">
212
+ <h3>Tu web más rápida con Webempresa</h3>
213
+ <ul>
214
+ <li><label>Además ahora un <a href="https://codection.com/25-de-descuento-en-el-mejor-hosting-en-espanol-con-webempresa/">25% de descuento</a>.</label></li>
215
+ </ul>
216
+ <a href="https://codection.com/25-de-descuento-en-el-mejor-hosting-en-espanol-con-webempresa/" target="_blank">
217
+ <img src="<?php echo plugins_url(); ?>/import-users-from-csv-with-meta/assets/webempresa_logo.png">
218
+ </a>
219
+ </div>
220
+ <?php else: ?>
221
+ <div class="sidebar_section" style="padding:0 !important;border:none !important;background:none !important;">
222
+ <a href="https://codection.com/how-to-transfer-your-website-to-inmotion-hosting/" target="_blank">
223
+ <img src="<?php echo plugins_url(); ?>/import-users-from-csv-with-meta/assets/codection-inmotion.png">
224
+ </a>
225
+ </div>
226
+ <?php endif; ?>
227
+
228
+ <div class="sidebar_section" id="vote_us">
229
+ <h3>Rate Us</h3>
230
+ <ul>
231
+ <li><label>If you like it, Please vote and support us.</label></li>
232
+ </ul>
233
+ </div>
234
+ <div class="sidebar_section">
235
+ <h3>Having Issues?</h3>
236
+ <ul>
237
+ <li><label>You can create a ticket</label> <a target="_blank" href="http://wordpress.org/support/plugin/import-users-from-csv-with-meta"><label>WordPress support forum</label></a></li>
238
+ <li><label>You can ask for premium support</label> <a target="_blank" href="mailto:contacto@codection.com"><label>contacto@codection.com</label></a></li>
239
+ </ul>
240
+ </div>
241
+ <div class="sidebar_section">
242
+ <h3>Donate</h3>
243
+ <ul>
244
+ <li><label>If you appreciate our work and you want to help us to continue developing it and giving the best support</label> <a target="_blank" href="https://paypal.me/imalrod"><label>donate</label></a></li>
245
+ </ul>
246
+ </div>
247
+ </div>
248
+
249
+ </div>
250
+ <script type="text/javascript">
251
+ function check(){
252
+ if(document.getElementById("uploadfiles").value == "" && jQuery( "#upload_file" ).is(":visible") ) {
253
+ alert("<?php _e( 'Please choose a file', 'import-users-from-csv-with-meta' ); ?>");
254
+ return false;
255
+ }
256
+
257
+ if( jQuery( "#path_to_file" ).val() == "" && jQuery( "#introduce_path" ).is(":visible") ) {
258
+ alert("<?php _e( 'Please enter a path to the file', 'import-users-from-csv-with-meta' ); ?>");
259
+ return false;
260
+ }
261
+
262
+ if( jQuery("[name=role\\[\\]]input:checkbox:checked").length == 0 ){
263
+ alert("<?php _e( 'Please select a role', 'import-users-from-csv-with-meta'); ?>");
264
+ return false;
265
+ }
266
+ }
267
+
268
+ jQuery( document ).ready( function( $ ){
269
+ $( ".delete_attachment" ).click( function(){
270
+ var answer = confirm( "<?php _e( 'Are you sure to delete this file?', 'import-users-from-csv-with-meta' ); ?>" );
271
+ if( answer ){
272
+ var data = {
273
+ 'action': 'acui_delete_attachment',
274
+ 'attach_id': $( this ).attr( "attach_id" )
275
+ };
276
+
277
+ $.post(ajaxurl, data, function(response) {
278
+ if( response != 1 )
279
+ alert( "<?php _e( 'There were problems deleting the file, please check file permissions', 'import-users-from-csv-with-meta' ); ?>" );
280
+ else{
281
+ alert( "<?php _e( 'File successfully deleted', 'import-users-from-csv-with-meta' ); ?>" );
282
+ document.location.reload();
283
+ }
284
+ });
285
+ }
286
+ });
287
+
288
+ $( "#bulk_delete_attachment" ).click( function(){
289
+ var answer = confirm( "<?php _e( 'Are you sure to delete ALL CSV files uploaded? There can be CSV files from other plugins.', 'import-users-from-csv-with-meta' ); ?>" );
290
+ if( answer ){
291
+ var data = {
292
+ 'action': 'acui_bulk_delete_attachment',
293
+ };
294
+
295
+ $.post(ajaxurl, data, function(response) {
296
+ if( response != 1 )
297
+ alert( "<?php _e( 'There were problems deleting the files, please check files permissions', 'import-users-from-csv-with-meta' ); ?>" );
298
+ else{
299
+ alert( "<?php _e( 'Files successfully deleted', 'import-users-from-csv-with-meta' ); ?>" );
300
+ document.location.reload();
301
+ }
302
+ });
303
+ }
304
+ });
305
+
306
+ $( ".toggle_upload_path" ).click( function( e ){
307
+ e.preventDefault();
308
+
309
+ $("#upload_file,#introduce_path").toggle();
310
+ } );
311
+
312
+ $("#vote_us").click(function(){
313
+ var win=window.open("http://wordpress.org/support/view/plugin-reviews/import-users-from-csv-with-meta?free-counter?rate=5#postform", '_blank');
314
+ win.focus();
315
+ });
316
+
317
+ } );
318
+ </script>
319
+ <?php
320
+ }
321
+ }
trunk/csv_example.png ADDED
Binary file
trunk/email-repeated.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ function acui_hack_email( $email ) {
6
+ if ( ! is_email( $email ) ) {
7
+ return;
8
+ }
9
+
10
+ $old_email = $email;
11
+
12
+ for ( $i = 0; ! $skip_remap && email_exists( $email ); $i++ ) {
13
+ $email = str_replace( '@', "+ama{$i}@", $old_email );
14
+ }
15
+
16
+ return $email;
17
+ }
18
+
19
+ function acui_hack_restore_remapped_email_address( $user_id, $email ) {
20
+ global $wpdb;
21
+
22
+ $wpdb->update(
23
+ $wpdb->users,
24
+ array( 'user_email' => $email ),
25
+ array( 'ID' => $user_id )
26
+ );
27
+
28
+ clean_user_cache( $user_id );
29
+ }
trunk/icon_coffee.png ADDED
Binary file
trunk/import-users-from-csv-with-meta.php ADDED
@@ -0,0 +1,727 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Import users from CSV with meta
4
+ Plugin URI: https://www.codection.com
5
+ Description: This plugins allows to import users using CSV files to WP database automatically
6
+ Version: 1.14
7
+ Author: codection
8
+ Author URI: https://codection.com
9
+ License: GPL2
10
+ License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
+ Text Domain: import-users-from-csv-with-meta
12
+ Domain Path: /languages
13
+ */
14
+
15
+ if ( ! defined( 'ABSPATH' ) ) exit;
16
+
17
+ $acui_url_plugin = WP_PLUGIN_URL . '/' . str_replace( basename( __FILE__ ), "", plugin_basename( __FILE__ ) );
18
+ $wp_users_fields = array( "id", "user_nicename", "user_url", "display_name", "nickname", "first_name", "last_name", "description", "jabber", "aim", "yim", "user_registered", "password", "user_pass", "locale" );
19
+ $wp_min_fields = array("Username", "Email");
20
+ $acui_fields = array( "bp_group", "bp_group_role", "role" );
21
+ $acui_restricted_fields = array_merge( $wp_users_fields, $wp_min_fields, $acui_fields );
22
+
23
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
24
+
25
+ require_once( "smtp.php" );
26
+ require_once( "email-repeated.php" );
27
+
28
+ require_once( "classes/email-templates.php" );
29
+
30
+ require_once( "classes/homepage.php" );
31
+ require_once( "classes/columns.php" );
32
+ require_once( "classes/frontend.php" );
33
+ require_once( "classes/doc.php" );
34
+ require_once( "classes/email-options.php" );
35
+ require_once( "classes/cron.php" );
36
+ require_once( "classes/donate.php" );
37
+ require_once( "classes/help.php" );
38
+
39
+ if( is_plugin_active( 'buddypress/bp-loader.php' ) ){
40
+ if ( defined( 'BP_VERSION' ) )
41
+ acui_loader();
42
+ else
43
+ add_action( 'bp_init', 'acui_loader' );
44
+ }
45
+ else
46
+ acui_loader();
47
+
48
+ function acui_loader(){
49
+ register_activation_hook( __FILE__,'acui_init' );
50
+ register_deactivation_hook( __FILE__, 'acui_deactivate' );
51
+ add_action( "plugins_loaded", "acui_init" );
52
+ add_action( "admin_menu", "acui_menu" );
53
+ add_action( 'admin_enqueue_scripts', 'acui_admin_enqueue_scripts' );
54
+ add_filter( 'plugin_row_meta', 'acui_plugin_row_meta', 10, 2 );
55
+ add_action( 'admin_init', 'acui_modify_user_edit_admin' );
56
+ add_action( 'wp_ajax_acui_delete_attachment', 'acui_delete_attachment' );
57
+ add_action( 'wp_ajax_acui_bulk_delete_attachment', 'acui_bulk_delete_attachment' );
58
+ add_action( 'acui_cron_process', 'acui_cron_process', 10 );
59
+
60
+ if( is_plugin_active( 'buddypress/bp-loader.php' ) && file_exists( plugin_dir_path( __DIR__ ) . 'buddypress/bp-xprofile/classes/class-bp-xprofile-group.php' ) ){
61
+ require_once( plugin_dir_path( __DIR__ ) . 'buddypress/bp-xprofile/classes/class-bp-xprofile-group.php' );
62
+ }
63
+
64
+ if( get_option( 'acui_show_profile_fields' ) == true ){
65
+ add_action( "show_user_profile", "acui_extra_user_profile_fields" );
66
+ add_action( "edit_user_profile", "acui_extra_user_profile_fields" );
67
+ add_action( "personal_options_update", "acui_save_extra_user_profile_fields" );
68
+ add_action( "edit_user_profile_update", "acui_save_extra_user_profile_fields" );
69
+ }
70
+
71
+ // includes
72
+ foreach ( glob( plugin_dir_path( __FILE__ ) . "include/*.php" ) as $file ) {
73
+ include_once( $file );
74
+ }
75
+
76
+ // addons
77
+ foreach ( glob( plugin_dir_path( __FILE__ ) . "addons/*.php" ) as $file ) {
78
+ include_once( $file );
79
+ }
80
+
81
+ require_once( "importer.php" );
82
+ }
83
+
84
+ function acui_init(){
85
+ load_plugin_textdomain( 'import-users-from-csv-with-meta', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
86
+ acui_activate();
87
+ }
88
+
89
+ function acui_get_default_options_list(){
90
+ return array(
91
+ 'acui_columns' => array(),
92
+ // emails
93
+ 'acui_mail_subject' => __('Welcome to', 'import-users-from-csv-with-meta') . ' ' . get_bloginfo("name"),
94
+ 'acui_mail_body' => __('Welcome,', 'import-users-from-csv-with-meta') . '<br/>' . __('Your data to login in this site is:', 'import-users-from-csv-with-meta') . '<br/><ul><li>' . __('URL to login', 'import-users-from-csv-with-meta') . ': **loginurl**</li><li>' . __( 'Username', 'import-users-from-csv-with-meta') . '= **username**</li><li>Password = **password**</li></ul>',
95
+ 'acui_mail_template_id' => 0,
96
+ 'acui_mail_attachment_id' => 0,
97
+ 'acui_enable_email_templates' => false,
98
+ // cron
99
+ 'acui_cron_activated' => false,
100
+ 'acui_cron_send_mail' => false,
101
+ 'acui_cron_send_mail_updated' => false,
102
+ 'acui_cron_delete_users' => false,
103
+ 'acui_cron_delete_users_assign_posts' => 0,
104
+ 'acui_cron_change_role_not_present' => false,
105
+ 'acui_cron_change_role_not_present_role' => 0,
106
+ 'acui_cron_path_to_file' => '',
107
+ 'acui_cron_path_to_move' => '',
108
+ 'acui_cron_path_to_move_auto_rename' => false,
109
+ 'acui_cron_period' => '',
110
+ 'acui_cron_role' => '',
111
+ 'acui_cron_update_roles_existing_users' => '',
112
+ 'acui_cron_log' => '',
113
+ 'acui_cron_allow_multiple_accounts' => 'not_allowed',
114
+ // frontend
115
+ 'acui_frontend_send_mail'=> false,
116
+ 'acui_frontend_send_mail_updated' => false,
117
+ 'acui_frontend_delete_users' => false,
118
+ 'acui_frontend_delete_users_assign_posts' => 0,
119
+ 'acui_frontend_change_role_not_present' => false,
120
+ 'acui_frontend_change_role_not_present_role' => 0,
121
+ 'acui_frontend_role' => '',
122
+ // others
123
+ 'acui_manually_send_mail' => false,
124
+ 'acui_manually_send_mail_updated' => false,
125
+ 'acui_automatic_wordpress_email' => false,
126
+ 'acui_show_profile_fields' => false
127
+ );
128
+ }
129
+
130
+ function acui_activate(){
131
+ global $acui_smtp_options;
132
+ $acui_default_options_list = acui_get_default_options_list();
133
+
134
+ foreach ( $acui_default_options_list as $key => $value) {
135
+ add_option( $key, $value );
136
+ }
137
+
138
+ // smtp
139
+ foreach ( $acui_smtp_options as $key => $value ) {
140
+ add_option( $key, $value );
141
+ }
142
+ }
143
+
144
+ function acui_deactivate(){
145
+ wp_clear_scheduled_hook( 'acui_cron' );
146
+ }
147
+
148
+ function acui_admin_enqueue_scripts() {
149
+ wp_enqueue_style( 'acui_css', plugin_dir_url( __FILE__ ) . '/assets/style.css', false, '1.0.0' );
150
+ }
151
+
152
+ function acui_delete_options(){
153
+ global $acui_smtp_options;
154
+ $acui_default_options_list = acui_get_default_options_list();
155
+
156
+ foreach ( $acui_default_options_list as $key => $value) {
157
+ delete_option( $key );
158
+ }
159
+
160
+ foreach ( $acui_smtp_options as $key => $value ) {
161
+ delete_option( $key );
162
+ }
163
+ }
164
+
165
+ function acui_get_restricted_fields(){
166
+ global $acui_restricted_fields;
167
+ return apply_filters( 'acui_restricted_fields', $acui_restricted_fields );
168
+ }
169
+
170
+ function acui_menu() {
171
+ add_submenu_page( 'tools.php', __( 'Insert users massively (CSV)', 'import-users-from-csv-with-meta' ), __( 'Import users from CSV', 'import-users-from-csv-with-meta' ), 'create_users', 'acui', 'acui_options' );
172
+ }
173
+
174
+ function acui_plugin_row_meta( $links, $file ){
175
+ if ( strpos( $file, basename( __FILE__ ) ) !== false ) {
176
+ $new_links = array(
177
+ '<a href="https://www.paypal.me/imalrod" target="_blank">' . __( 'Donate', 'import-users-from-csv-with-meta' ) . '</a>',
178
+ '<a href="mailto:contacto@codection.com" target="_blank">' . __( 'Premium support', 'import-users-from-csv-with-meta' ) . '</a>',
179
+ '<a href="http://codection.com/tienda" target="_blank">' . __( 'Premium plugins', 'import-users-from-csv-with-meta' ) . '</a>',
180
+ );
181
+
182
+ $links = array_merge( $links, $new_links );
183
+ }
184
+
185
+ return $links;
186
+ }
187
+
188
+ function acui_detect_delimiter( $file ) {
189
+ $delimiters = array(
190
+ ';' => 0,
191
+ ',' => 0,
192
+ "\t" => 0,
193
+ "|" => 0
194
+ );
195
+
196
+ $handle = @fopen($file, "r");
197
+ $firstLine = fgets($handle);
198
+ fclose($handle);
199
+ foreach ($delimiters as $delimiter => &$count) {
200
+ $count = count(str_getcsv($firstLine, $delimiter));
201
+ }
202
+
203
+ return array_search(max($delimiters), $delimiters);
204
+ }
205
+
206
+ function acui_string_conversion( $string ){
207
+ if(!preg_match('%(?:
208
+ [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
209
+ |\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
210
+ |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
211
+ |\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
212
+ |\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
213
+ |[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
214
+ |\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
215
+ )+%xs', $string)){
216
+ return utf8_encode($string);
217
+ }
218
+ else
219
+ return $string;
220
+ }
221
+
222
+ function acui_mail_from(){
223
+ return get_option( "acui_mail_from" );
224
+ }
225
+
226
+ function acui_mail_from_name(){
227
+ return get_option( "acui_mail_from_name" );
228
+ }
229
+
230
+ function acui_user_id_exists( $user_id ){
231
+ if ( get_userdata( $user_id ) === false )
232
+ return false;
233
+ else
234
+ return true;
235
+ }
236
+
237
+ function acui_get_roles($user_id){
238
+ $roles = array();
239
+ $user = new WP_User( $user_id );
240
+
241
+ if ( !empty( $user->roles ) && is_array( $user->roles ) ) {
242
+ foreach ( $user->roles as $role )
243
+ $roles[] = $role;
244
+ }
245
+
246
+ return $roles;
247
+ }
248
+
249
+ function acui_get_editable_roles() {
250
+ global $wp_roles;
251
+
252
+ $all_roles = $wp_roles->roles;
253
+ $editable_roles = apply_filters('editable_roles', $all_roles);
254
+ $list_editable_roles = array();
255
+
256
+ foreach ($editable_roles as $key => $editable_role)
257
+ $list_editable_roles[$key] = $editable_role["name"];
258
+
259
+ return $list_editable_roles;
260
+ }
261
+
262
+ function acui_check_options(){
263
+ if( get_option( "acui_mail_body" ) == "" )
264
+ update_option( "acui_mail_body", __( 'Welcome,', 'import-users-from-csv-with-meta' ) . '<br/>' . __( 'Your data to login in this site is:', 'import-users-from-csv-with-meta' ) . '<br/><ul><li>' . __( 'URL to login', 'import-users-from-csv-with-meta' ) . ': **loginurl**</li><li>' . __( 'Username', 'import-users-from-csv-with-meta' ) . ' = **username**</li><li>' . __( 'Password', 'import-users-from-csv-with-meta' ) . ' = **password**</li></ul>' );
265
+
266
+ if( get_option( "acui_mail_subject" ) == "" )
267
+ update_option( "acui_mail_subject", __('Welcome to','import-users-from-csv-with-meta') . ' ' . get_bloginfo("name") );
268
+ }
269
+
270
+ function acui_admin_tabs( $current = 'homepage' ) {
271
+ $tabs = array(
272
+ 'homepage' => __( 'Import', 'import-users-from-csv-with-meta' ),
273
+ 'frontend' => __( 'Frontend', 'import-users-from-csv-with-meta' ),
274
+ 'cron' => __( 'Cron import', 'import-users-from-csv-with-meta' ),
275
+ 'columns' => __( 'Extra profile fields', 'import-users-from-csv-with-meta' ),
276
+ 'mail-options' => __( 'Mail options', 'import-users-from-csv-with-meta' ),
277
+ 'smtp-settings' => __( 'SMTP settings (deprecated)', 'import-users-from-csv-with-meta' ),
278
+ 'doc' => __( 'Documentation', 'import-users-from-csv-with-meta' ),
279
+ 'donate' => __( 'Donate/Patreon', 'import-users-from-csv-with-meta' ),
280
+ 'shop' => __( 'Shop', 'import-users-from-csv-with-meta' ),
281
+ 'help' => __( 'Hire an expert', 'import-users-from-csv-with-meta' )
282
+ );
283
+
284
+ $tabs = apply_filters( 'acui_tabs', $tabs );
285
+
286
+ if( get_option( "acui_settings" ) == "wordpress" )
287
+ unset( $tabs['smtp-settings'] );
288
+
289
+ echo '<div id="icon-themes" class="icon32"><br></div>';
290
+ echo '<h2 class="nav-tab-wrapper">';
291
+ foreach( $tabs as $tab => $name ){
292
+ $class = ( $tab == $current ) ? ' nav-tab-active' : '';
293
+
294
+ if( $tab == "shop" ){
295
+ $href = "http://codection.com/tienda/";
296
+ $target = "_blank";
297
+ }
298
+ else{
299
+ $href = "?page=acui&tab=$tab";
300
+ $target = "_self";
301
+ }
302
+
303
+ echo "<a class='nav-tab$class' href='$href' target='$target'>$name</a>";
304
+
305
+ }
306
+ echo '</h2>';
307
+ }
308
+
309
+ function acui_fileupload_process( $form_data, $is_cron = false, $is_frontend = false ) {
310
+ if ( !( $is_cron || $is_frontend ) && ( ! isset( $_POST['acui-nonce'] ) || ! wp_verify_nonce( $_POST['acui-nonce'], 'acui-import' ) ) ){
311
+ wp_die( 'Nonce problem' );
312
+ }
313
+
314
+ $path_to_file = $form_data["path_to_file"];
315
+ $role = $form_data["role"];
316
+ $uploadfiles = $_FILES['uploadfiles'];
317
+
318
+ if( empty( $uploadfiles["name"][0] ) ):
319
+
320
+ if( !file_exists ( $path_to_file ) )
321
+ wp_die( __( 'Error, we cannot find the file', 'import-users-from-csv-with-meta' ) . ": $path_to_file" );
322
+
323
+ acui_import_users( $path_to_file, $form_data, 0, $is_cron, $is_frontend );
324
+
325
+ else:
326
+
327
+ if ( is_array($uploadfiles) ) {
328
+
329
+ foreach ( $uploadfiles['name'] as $key => $value ) {
330
+
331
+ if ($uploadfiles['error'][$key] == 0) {
332
+ $filetmp = $uploadfiles['tmp_name'][$key];
333
+
334
+ $filename = $uploadfiles['name'][$key];
335
+
336
+ $filetype = wp_check_filetype( basename( $filename ), array('csv' => 'text/csv') );
337
+ $filetitle = preg_replace('/\.[^.]+$/', '', basename( $filename ) );
338
+ $filename = $filetitle . '.' . $filetype['ext'];
339
+ $upload_dir = wp_upload_dir();
340
+
341
+ if ($filetype['ext'] != "csv") {
342
+ wp_die('File must be a CSV');
343
+ return;
344
+ }
345
+
346
+ $i = 0;
347
+ while ( file_exists( $upload_dir['path'] .'/' . $filename ) ) {
348
+ $filename = $filetitle . '_' . $i . '.' . $filetype['ext'];
349
+ $i++;
350
+ }
351
+ $filedest = $upload_dir['path'] . '/' . $filename;
352
+
353
+ if ( !is_writeable( $upload_dir['path'] ) ) {
354
+ wp_die( __( 'Unable to write to directory. Is this directory writable by the server?', 'import-users-from-csv-with-meta' ));
355
+ return;
356
+ }
357
+
358
+ if ( !@move_uploaded_file($filetmp, $filedest) ){
359
+ wp_die( __( 'Error, the file', 'import-users-from-csv-with-meta' ) . " $filetmp " . __( 'could not moved to', 'import-users-from-csv-with-meta' ) . " : $filedest");
360
+ continue;
361
+ }
362
+
363
+ $attachment = array(
364
+ 'post_mime_type' => $filetype['type'],
365
+ 'post_title' => $filetitle,
366
+ 'post_content' => '',
367
+ 'post_status' => 'inherit'
368
+ );
369
+
370
+ $attach_id = wp_insert_attachment( $attachment, $filedest );
371
+ require_once( ABSPATH . "wp-admin" . '/includes/image.php' );
372
+ $attach_data = wp_generate_attachment_metadata( $attach_id, $filedest );
373
+ wp_update_attachment_metadata( $attach_id, $attach_data );
374
+
375
+ acui_import_users( $filedest, $form_data, $attach_id, $is_cron, $is_frontend );
376
+ }
377
+ }
378
+ }
379
+ endif;
380
+ }
381
+
382
+ function acui_manage_frontend_process( $form_data ){
383
+ if( isset( $form_data["send-mail-frontend"] ) && $form_data["send-mail-frontend"] == "yes" )
384
+ update_option( "acui_frontend_send_mail", true );
385
+ else
386
+ update_option( "acui_frontend_send_mail", false );
387
+
388
+ if( isset( $form_data["send-mail-updated-frontend"] ) && $form_data["send-mail-updated-frontend"] == "yes" )
389
+ update_option( "acui_frontend_send_mail_updated", true );
390
+ else
391
+ update_option( "acui_frontend_send_mail_updated", false );
392
+
393
+ if( isset( $form_data["delete-users-frontend"] ) && $form_data["delete-users-frontend"] == "yes" )
394
+ update_option( "acui_frontend_delete_users", true );
395
+ else
396
+ update_option( "acui_frontend_delete_users", false );
397
+
398
+ update_option( "acui_frontend_delete_users_assign_posts", $form_data["delete-users-assign-posts-frontend"] );
399
+
400
+ if( isset( $form_data["change-role-not-present-frontend"] ) && $form_data["change-role-not-present-frontend"] == "yes" )
401
+ update_option( "acui_frontend_change_role_not_present", true );
402
+ else
403
+ update_option( "acui_frontend_change_role_not_present", false );
404
+
405
+ update_option( "acui_frontend_change_role_not_present_role", $form_data["change-role-not-present-role-frontend"] );
406
+
407
+ if( isset( $form_data["activate-users-wp-members-frontend"] ) )
408
+ update_option( "acui_frontend_activate_users_wp_members", $form_data["activate-users-wp-members-frontend"] );
409
+ else
410
+ update_option( "acui_frontend_activate_users_wp_members", 'no_activate' );
411
+
412
+ update_option( "acui_frontend_role", $form_data["role-frontend"] );
413
+ ?>
414
+ <div class="updated">
415
+ <p><?php _e( 'Settings updated correctly', 'import-users-from-csv-with-meta' ) ?></p>
416
+ </div>
417
+ <?php
418
+ }
419
+
420
+
421
+ function acui_manage_extra_profile_fields( $form_data ){
422
+ if( isset( $form_data["show-profile-fields"] ) && $form_data["show-profile-fields"] == "yes" ){
423
+ update_option( "acui_show_profile_fields", true );
424
+ }
425
+ else{
426
+ update_option( "acui_show_profile_fields", false );
427
+ }
428
+ }
429
+
430
+ function acui_save_mail_template( $form_data ){
431
+ update_option( "acui_automatic_wordpress_email", stripslashes( $form_data["automattic_wordpress_email"] ) );
432
+ update_option( "acui_mail_body", stripslashes( $form_data["body_mail"] ) );
433
+ update_option( "acui_mail_subject", stripslashes( $form_data["subject_mail"] ) );
434
+ update_option( "acui_mail_template_id", stripslashes( $form_data["template_id"] ) );
435
+ update_option( "acui_mail_attachment_id", stripslashes( $form_data["email_template_attachment_id"] ) );
436
+
437
+ if( !empty( $form_data["template_id"] ) ){
438
+ wp_update_post( array(
439
+ 'ID' => $form_data["template_id"],
440
+ 'post_title' => $form_data["subject_mail"],
441
+ 'post_content' => $form_data["body_mail"],
442
+ ) );
443
+
444
+ update_post_meta( $form_data["template_id"], 'email_template_attachment_id', $form_data["email_template_attachment_id"] );
445
+ }
446
+ ?>
447
+ <div class="updated">
448
+ <p><?php _e( 'Mail template updated correctly', 'import-users-from-csv-with-meta' )?></p>
449
+ </div>
450
+ <?php
451
+ }
452
+
453
+ function acui_manage_cron_process( $form_data ){
454
+ $next_timestamp = wp_next_scheduled( 'acui_cron_process' );
455
+
456
+ if( isset( $form_data["cron-activated"] ) && $form_data["cron-activated"] == "yes" ){
457
+ update_option( "acui_cron_activated", true );
458
+
459
+ if( !$next_timestamp ) {
460
+ wp_schedule_event( time(), $form_data[ "period" ], 'acui_cron_process' );
461
+ }
462
+ }
463
+ else{
464
+ update_option( "acui_cron_activated", false );
465
+ wp_unschedule_event( $next_timestamp, 'acui_cron_process');
466
+ }
467
+
468
+ if( isset( $form_data["send-mail-cron"] ) && $form_data["send-mail-cron"] == "yes" )
469
+ update_option( "acui_cron_send_mail", true );
470
+ else
471
+ update_option( "acui_cron_send_mail", false );
472
+
473
+ if( isset( $form_data["send-mail-updated"] ) && $form_data["send-mail-updated"] == "yes" )
474
+ update_option( "acui_cron_send_mail_updated", true );
475
+ else
476
+ update_option( "acui_cron_send_mail_updated", false );
477
+
478
+ if( isset( $form_data["cron-delete-users"] ) && $form_data["cron-delete-users"] == "yes" )
479
+ update_option( "acui_cron_delete_users", true );
480
+ else
481
+ update_option( "acui_cron_delete_users", false );
482
+
483
+ if( isset( $form_data["move-file-cron"] ) && $form_data["move-file-cron"] == "yes" )
484
+ update_option( "acui_move_file_cron", true );
485
+ else
486
+ update_option( "acui_move_file_cron", false );
487
+
488
+ if( isset( $form_data["path_to_move_auto_rename"] ) && $form_data["path_to_move_auto_rename"] == "yes" )
489
+ update_option( "acui_cron_path_to_move_auto_rename", true );
490
+ else
491
+ update_option( "acui_cron_path_to_move_auto_rename", false );
492
+
493
+ if ( isset ( $form_data["allow_multiple_accounts"] ) && $form_data["allow_multiple_accounts"] == "yes" )
494
+ update_option( "acui_cron_allow_multiple_accounts", "allowed" );
495
+ else
496
+ update_option( "acui_cron_allow_multiple_accounts", "not_allowed" );
497
+
498
+ update_option( "acui_cron_path_to_file", $form_data["path_to_file"] );
499
+ update_option( "acui_cron_path_to_move", $form_data["path_to_move"] );
500
+ update_option( "acui_cron_period", $form_data["period"] );
501
+ update_option( "acui_cron_role", $form_data["role"] );
502
+ update_option( "acui_cron_update_roles_existing_users", $form_data["update-roles-existing-users"] );
503
+
504
+ if( isset( $form_data["cron-delete-users"] ) && $form_data["cron-delete-users"] == "yes" )
505
+ update_option( "acui_cron_delete_users", true );
506
+ else
507
+ update_option( "acui_cron_delete_users", false );
508
+ update_option( "acui_cron_delete_users_assign_posts", $form_data["cron-delete-users-assign-posts"] );
509
+
510
+ if( isset( $form_data["cron-change-role-not-present"] ) && $form_data["cron-change-role-not-present"] == "yes" )
511
+ update_option( "acui_cron_change_role_not_present", true );
512
+ else
513
+ update_option( "acui_cron_change_role_not_present", false );
514
+
515
+ update_option( "acui_cron_change_role_not_present_role", $form_data["cron-change-role-not-present-role"] );
516
+ ?>
517
+ <div class="updated">
518
+ <p><?php _e( 'Settings updated correctly', 'import-users-from-csv-with-meta' ) ?></p>
519
+ </div>
520
+ <?php
521
+ }
522
+
523
+ function acui_cron_process(){
524
+ $message = __('Import cron task starts at', 'import-users-from-csv-with-meta' ) . ' ' . date("Y-m-d H:i:s") . '<br/>';
525
+
526
+ $form_data = array();
527
+ $form_data[ "path_to_file" ] = get_option( "acui_cron_path_to_file");
528
+ $form_data[ "role" ] = get_option( "acui_cron_role");
529
+ $form_data[ "update_roles_existing_users" ] = get_option( "acui_cron_update_roles_existing_users");
530
+ $form_data[ "empty_cell_action" ] = "leave";
531
+
532
+ ob_start();
533
+ acui_fileupload_process( $form_data, true );
534
+ $message .= "<br/>" . ob_get_contents() . "<br/>";
535
+ ob_end_clean();
536
+
537
+ $move_file_cron = get_option( "acui_move_file_cron");
538
+
539
+ if( $move_file_cron ){
540
+ $path_to_file = get_option( "acui_cron_path_to_file");
541
+ $path_to_move = get_option( "acui_cron_path_to_move");
542
+
543
+ rename( $path_to_file, $path_to_move );
544
+
545
+ acui_cron_process_auto_rename(); // optionally rename with date and time included
546
+ }
547
+
548
+ $message .= __( '--Finished at', 'import-users-from-csv-with-meta' ) . ' ' . date("Y-m-d H:i:s") . '<br/><br/>';
549
+
550
+ update_option( "acui_cron_log", $message );
551
+ }
552
+
553
+ function acui_cron_process_auto_rename () {
554
+ if( get_option( "acui_cron_path_to_move_auto_rename" ) != true )
555
+ return;
556
+
557
+ $movefile = get_option( "acui_cron_path_to_move");
558
+ if ($movefile && file_exists($movefile)) {
559
+ $parts = pathinfo($movefile);
560
+ $filename = $parts['filename'];
561
+ if ($filename){
562
+ $date = date('YmdHis');
563
+ $newfile = $parts['dirname'] . '/' . $filename .'_' . $date . '.' . $parts['extension'];
564
+ rename($movefile , $newfile);
565
+ }
566
+ }
567
+ }
568
+
569
+ function acui_extra_user_profile_fields( $user ) {
570
+ $acui_restricted_fields = acui_get_restricted_fields();
571
+ $headers = get_option("acui_columns");
572
+ if( is_array( $headers ) && !empty( $headers ) ):
573
+ ?>
574
+ <h3>Extra profile information</h3>
575
+
576
+ <table class="form-table"><?php
577
+
578
+ foreach ( $headers as $column ):
579
+ if( in_array( $column, $acui_restricted_fields ) )
580
+ continue;
581
+ ?>
582
+ <tr>
583
+ <th><label for="<?php echo $column; ?>"><?php echo $column; ?></label></th>
584
+ <td><input type="text" name="<?php echo $column; ?>" id="<?php echo $column; ?>" value="<?php echo esc_attr(get_the_author_meta($column, $user->ID )); ?>" class="regular-text" /></td>
585
+ </tr>
586
+ <?php
587
+ endforeach;
588
+ ?>
589
+ </table><?php
590
+ endif;
591
+ }
592
+
593
+ function acui_save_extra_user_profile_fields( $user_id ){
594
+ $headers = get_option("acui_columns");
595
+ $acui_restricted_fields = acui_get_restricted_fields();
596
+
597
+ $post_filtered = filter_input_array( INPUT_POST );
598
+
599
+ if( is_array( $headers ) && count( $headers ) > 0 ):
600
+ foreach ( $headers as $column ){
601
+ if( in_array( $column, $acui_restricted_fields ) )
602
+ continue;
603
+
604
+ $column_sanitized = str_replace(" ", "_", $column);
605
+ update_user_meta( $user_id, $column, $post_filtered[$column_sanitized] );
606
+ }
607
+ endif;
608
+ }
609
+
610
+ function acui_modify_user_edit_admin(){
611
+ global $pagenow;
612
+
613
+ if(in_array($pagenow, array("user-edit.php", "profile.php"))){
614
+ $acui_columns = get_option("acui_columns");
615
+
616
+ if(is_array($acui_columns) && !empty($acui_columns)){
617
+ $new_columns = array();
618
+ $core_fields = array(
619
+ 'username',
620
+ 'user_email',
621
+ 'first_name',
622
+ 'role',
623
+ 'last_name',
624
+ 'nickname',
625
+ 'display_name',
626
+ 'description',
627
+ 'billing_first_name',
628
+ 'billing_last_name',
629
+ 'billing_company',
630
+ 'billing_address_1',
631
+ 'billing_address_2',
632
+ 'billing_city',
633
+ 'billing_postcode',
634
+ 'billing_country',
635
+ 'billing_state',
636
+ 'billing_phone',
637
+ 'billing_email',
638
+ 'shipping_first_name',
639
+ 'shipping_last_name',
640
+ 'shipping_company',
641
+ 'shipping_address_1',
642
+ 'shipping_address_2',
643
+ 'shipping_city',
644
+ 'shipping_postcode',
645
+ 'shipping_country',
646
+ 'shipping_state'
647
+ );
648
+
649
+ foreach ($acui_columns as $key => $column) {
650
+
651
+ if(in_array($column, $core_fields)) {
652
+ // error_log('removing column because core '.$column);
653
+ continue;
654
+ }
655
+ if(in_array($column, $new_columns)) {
656
+ // error_log('removing column because not unique '.$column);
657
+ continue;
658
+ }
659
+
660
+ array_push($new_columns, $column);
661
+ }
662
+
663
+ update_option("acui_columns", $new_columns);
664
+ }
665
+ }
666
+ }
667
+
668
+ function acui_delete_attachment() {
669
+ if( ! current_user_can( 'manage_options' ) )
670
+ wp_die( __('You are not an adminstrator', 'import-users-from-csv-with-meta' ) );
671
+
672
+ $attach_id = intval( $_POST['attach_id'] );
673
+
674
+ $result = wp_delete_attachment( $attach_id, true );
675
+
676
+ if( $result === false )
677
+ echo 0;
678
+ else
679
+ echo 1;
680
+
681
+ wp_die();
682
+ }
683
+
684
+ function acui_bulk_delete_attachment(){
685
+ $args_old_csv = array( 'post_type'=> 'attachment', 'post_mime_type' => 'text/csv', 'post_status' => 'inherit', 'posts_per_page' => -1 );
686
+ $old_csv_files = new WP_Query( $args_old_csv );
687
+ $result = 1;
688
+
689
+ while($old_csv_files->have_posts()) :
690
+ $old_csv_files->the_post();
691
+
692
+ if( wp_delete_attachment( get_the_ID(), true ) === false )
693
+ $result = 0;
694
+ endwhile;
695
+
696
+ wp_reset_postdata();
697
+
698
+ echo $result;
699
+
700
+ wp_die();
701
+ }
702
+
703
+ // wp-access-areas functions
704
+ function acui_set_cap_for_user( $capability , &$user , $add ) {
705
+ $has_cap = $user->has_cap( $capability );
706
+ $is_change = ($add && ! $has_cap) || (!$add && $has_cap);
707
+ if ( $is_change ) {
708
+ if ( $add ) {
709
+ $user->add_cap( $capability , true );
710
+ do_action( 'wpaa_grant_access' , $user , $capability );
711
+ do_action( "wpaa_grant_{$capability}" , $user );
712
+ } else if ( ! $add ) {
713
+ $user->remove_cap( $capability );
714
+ do_action( 'wpaa_revoke_access' , $user , $capability );
715
+ do_action( "wpaa_revoke_{$capability}" , $user );
716
+ }
717
+ }
718
+ }
719
+
720
+ // misc
721
+ function cod_set_html_content_type() {
722
+ return 'text/html';
723
+ }
724
+
725
+ function acui_return_false(){
726
+ return false;
727
+ }
trunk/importer.php ADDED
@@ -0,0 +1,808 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ function acui_import_users( $file, $form_data, $attach_id = 0, $is_cron = false, $is_frontend = false ){?>
6
+ <div class="wrap">
7
+ <h2><?php _e('Importing users','import-users-from-csv-with-meta'); ?></h2>
8
+ <?php
9
+ set_time_limit(0);
10
+
11
+ do_action( 'before_acui_import_users' );
12
+
13
+ global $wpdb;
14
+ global $wp_users_fields;
15
+ global $wp_min_fields;
16
+ global $acui_fields;
17
+ $acui_restricted_fields = acui_get_restricted_fields();
18
+
19
+ if( is_plugin_active( 'wp-access-areas/wp-access-areas.php' ) ){
20
+ $wpaa_labels = WPAA_AccessArea::get_available_userlabels();
21
+ }
22
+
23
+ $buddypress_fields = array();
24
+
25
+ if( is_plugin_active( 'buddypress/bp-loader.php' ) ){
26
+ $profile_groups = BP_XProfile_Group::get( array( 'fetch_fields' => true ) );
27
+
28
+ if ( !empty( $profile_groups ) ) {
29
+ foreach ( $profile_groups as $profile_group ) {
30
+ if ( !empty( $profile_group->fields ) ) {
31
+ foreach ( $profile_group->fields as $field ) {
32
+ $buddypress_fields[] = $field->name;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ $users_registered = array();
40
+ $headers = array();
41
+ $headers_filtered = array();
42
+ $update_existing_users = isset( $form_data["update_existing_users"] ) ? $form_data["update_existing_users"] : '';
43
+ $role_default = isset( $form_data["role"] ) ? $form_data["role"] : '';
44
+ $update_roles_existing_users = isset( $form_data["update_roles_existing_users"] ) ? $form_data["update_roles_existing_users"] : '';
45
+ $empty_cell_action = isset( $form_data["empty_cell_action"] ) ? $form_data["empty_cell_action"] : '';
46
+ $delete_users = isset( $form_data["delete_users"] ) ? $form_data["delete_users"] : '';
47
+ $delete_users_assign_posts = isset( $form_data["delete_users_assign_posts"] ) ? $form_data["delete_users_assign_posts"] : '';
48
+ $change_role_not_present = isset( $form_data["change_role_not_present"] ) ? $form_data["change_role_not_present"] : '';
49
+ $change_role_not_present_role = isset( $form_data["change_role_not_present_role"] ) ? $form_data["change_role_not_present_role"] : '';
50
+
51
+ if( $is_frontend ){
52
+ $activate_users_wp_members = get_option( "acui_frontend_activate_users_wp_members" );
53
+ }
54
+ else{
55
+ if( !isset( $form_data["activate_users_wp_members"] ) || empty( $form_data["activate_users_wp_members"] ) )
56
+ $activate_users_wp_members = "no_activate";
57
+ else
58
+ $activate_users_wp_members = $form_data["activate_users_wp_members"];
59
+ }
60
+
61
+
62
+ if( $is_cron ){
63
+ if( get_option( "acui_cron_allow_multiple_accounts" ) == "allowed" ){
64
+ $allow_multiple_accounts = "allowed";
65
+ }
66
+ else {
67
+ $allow_multiple_accounts = "not_allowed";
68
+ }
69
+ }
70
+ else {
71
+ if( empty( $form_data["allow_multiple_accounts"] ) )
72
+ $allow_multiple_accounts = "not_allowed";
73
+ else
74
+ $allow_multiple_accounts = $form_data["allow_multiple_accounts"];
75
+ }
76
+
77
+ if( empty( $form_data["approve_users_new_user_appove"] ) )
78
+ $approve_users_new_user_appove = "no_approve";
79
+ else
80
+ $approve_users_new_user_appove = $form_data["approve_users_new_user_appove"];
81
+
82
+ // save mail sending preferences
83
+ if( isset( $form_data["sends_email"] ) && $form_data["sends_email"] == 'yes' )
84
+ update_option( "acui_manually_send_mail", true );
85
+ else
86
+ update_option( "acui_manually_send_mail", false );
87
+
88
+ if( isset( $form_data["send_email_updated"] ) && $form_data["send_email_updated"] == 'yes' )
89
+ update_option( "acui_manually_send_mail_updated", true );
90
+ else
91
+ update_option( "acui_manually_send_mail_updated", false );
92
+
93
+ // disable WordPress default emails if this must be disabled
94
+ if( !get_option('acui_automatic_wordpress_email') ){
95
+ add_filter( 'send_email_change_email', 'acui_return_false', 999 );
96
+ add_filter( 'send_password_change_email', 'acui_return_false', 999 );
97
+ }
98
+
99
+ // action
100
+ echo "<h3>" . __('Ready to registers','import-users-from-csv-with-meta') . "</h3>";
101
+ echo "<p>" . __('First row represents the form of sheet','import-users-from-csv-with-meta') . "</p>";
102
+ $row = 0;
103
+ $positions = array();
104
+ $error_importing = false;
105
+
106
+ ini_set('auto_detect_line_endings',TRUE);
107
+
108
+ $delimiter = acui_detect_delimiter( $file );
109
+
110
+ $manager = new SplFileObject( $file );
111
+ while ( $data = $manager->fgetcsv( $delimiter ) ):
112
+ if( empty($data[0]) )
113
+ continue;
114
+
115
+ if( count( $data ) == 1 )
116
+ $data = $data[0];
117
+
118
+ if( !is_array( $data ) ){
119
+ _e( 'CSV file seems to be bad formed. Please use LibreOffice to create and manage CSV to be sure the format is correct', 'import-users-from-csv-with-meta');
120
+ break;
121
+ }
122
+
123
+ foreach ( $data as $key => $value ){
124
+ $data[ $key ] = preg_replace( '/<script\b[^>]*>(.*?)<\/script>/is', '', trim( $value ) );
125
+ }
126
+
127
+ for( $i = 0; $i < count($data); $i++ ){
128
+ $data[$i] = acui_string_conversion( $data[$i] );
129
+
130
+ if( is_serialized( $data[$i] ) ) // serialized
131
+ $data[$i] = maybe_unserialize( $data[$i] );
132
+ elseif( strpos( $data[$i], "::" ) !== false ) // list of items
133
+ $data[$i] = explode( "::", $data[$i] );
134
+ }
135
+
136
+ if( $row == 0 ):
137
+ $data = apply_filters( 'pre_acui_import_header', $data );
138
+
139
+ // check min columns username - email
140
+ if(count( $data ) < 2){
141
+ echo "<div id='message' class='error'>" . __( 'File must contain at least 2 columns: username and email', 'import-users-from-csv-with-meta' ) . "</div>";
142
+ break;
143
+ }
144
+
145
+ $i = 0;
146
+ $password_position = false;
147
+ $id_position = false;
148
+
149
+ foreach ( $acui_restricted_fields as $acui_restricted_field ) {
150
+ $positions[ $acui_restricted_field ] = false;
151
+ }
152
+
153
+ foreach( $data as $element ){
154
+ $headers[] = $element;
155
+
156
+ if( in_array( strtolower( $element ) , $acui_restricted_fields ) )
157
+ $positions[ strtolower( $element ) ] = $i;
158
+
159
+ if( !in_array( strtolower( $element ), $acui_restricted_fields ) && !in_array( $element, $buddypress_fields ) )
160
+ $headers_filtered[] = $element;
161
+
162
+ $i++;
163
+ }
164
+
165
+ $columns = count( $data );
166
+
167
+ update_option( "acui_columns", $headers_filtered );
168
+ ?>
169
+ <h3><?php _e( 'Inserting and updating data', 'import-users-from-csv-with-meta' ); ?></h3>
170
+ <table>
171
+ <tr><th><?php _e( 'Row', 'import-users-from-csv-with-meta' ); ?></th><?php foreach( $headers as $element ) echo "<th>" . $element . "</th>"; ?></tr>
172
+ <?php
173
+ $row++;
174
+ else:
175
+ $data = apply_filters( 'pre_acui_import_single_user_data', $data, $headers );
176
+
177
+ if( count( $data ) != $columns ): // if number of columns is not the same that columns in header
178
+ echo '<script>alert("' . __( 'Row number', 'import-users-from-csv-with-meta' ) . " $row " . __( 'does not have the same columns than the header, we are going to skip', 'import-users-from-csv-with-meta') . '");</script>';
179
+ $error_importing = true;
180
+ continue;
181
+ endif;
182
+
183
+ do_action('pre_acui_import_single_user', $headers, $data );
184
+ $data = apply_filters('pre_acui_import_single_user_data', $data, $headers);
185
+
186
+ $username = $data[0];
187
+ $email = $data[1];
188
+ $user_id = 0;
189
+ $problematic_row = false;
190
+ $password_position = $positions["password"];
191
+ $password = "";
192
+ $role_position = $positions["role"];
193
+ $role = "";
194
+ $id_position = $positions["id"];
195
+
196
+ if ( !empty( $id_position ) )
197
+ $id = $data[ $id_position ];
198
+ else
199
+ $id = "";
200
+
201
+ $created = true;
202
+
203
+ if( $password_position === false ){
204
+ $password = wp_generate_password( apply_filters( 'acui_auto_password_length', 12 ), apply_filters( 'acui_auto_password_special_chars', true ), apply_filters( 'acui_auto_password_extra_special_chars', false ) );
205
+ }
206
+ else{
207
+ $password = $data[ $password_position ];
208
+ }
209
+
210
+ if( $role_position === false ){
211
+ $role = $role_default;
212
+ }
213
+ else{
214
+ $roles_cells = explode( ',', $data[ $role_position ] );
215
+ array_walk( $roles_cells, 'trim' );
216
+ $role = $roles_cells;
217
+ }
218
+
219
+ if( !empty( $id ) ){ // if user have used id
220
+ if( acui_user_id_exists( $id ) ){
221
+ if( $update_existing_users == 'no' ){
222
+ continue;
223
+ }
224
+
225
+ // we check if username is the same than in row
226
+ $user = get_user_by( 'ID', $id );
227
+
228
+ if( $user->user_login == $username ){
229
+ $user_id = $id;
230
+
231
+ if( $password !== "" )
232
+ wp_set_password( $password, $user_id );
233
+
234
+ if( !empty( $email ) ) {
235
+ $updateEmailArgs = array(
236
+ 'ID' => $user_id,
237
+ 'user_email' => $email
238
+ );
239
+ wp_update_user( $updateEmailArgs );
240
+ }
241
+
242
+ $created = false;
243
+ }
244
+ else{
245
+ echo '<script>alert("' . __( 'Problems with ID', 'import-users-from-csv-with-meta' ) . ": $id , " . __( 'username is not the same in the CSV and in database, we are going to skip.', 'import-users-from-csv-with-meta' ) . '");</script>';
246
+ continue;
247
+ }
248
+
249
+ }
250
+ else{
251
+ $userdata = array(
252
+ 'ID' => $id,
253
+ 'user_login' => $username,
254
+ 'user_email' => $email,
255
+ 'user_pass' => $password
256
+ );
257
+
258
+ $user_id = wp_insert_user( $userdata );
259
+
260
+ $created = true;
261
+ }
262
+ }
263
+ elseif( !empty( $email ) && ( ( sanitize_email( $email ) == '' ) ) ){ // if email is invalid
264
+ $problematic_row = true;
265
+ $error_importing = true;
266
+ $data[0] = __('Invalid EMail','import-users-from-csv-with-meta')." ($email)";
267
+ }
268
+ elseif( empty( $email) ) { // if email is blank
269
+ $problematic_row = true;
270
+ $error_importing = true;
271
+ $data[0] = __( 'EMail not specified', 'import-users-from-csv-with-meta' );
272
+ }
273
+ elseif( username_exists( $username ) ){ // if user exists, we take his ID by login, we will update his mail if it has changed
274
+ if( $update_existing_users == 'no' ){
275
+ continue;
276
+ }
277
+
278
+ $user_object = get_user_by( "login", $username );
279
+ $user_id = $user_object->ID;
280
+
281
+ if( $password !== "" )
282
+ wp_set_password( $password, $user_id );
283
+
284
+ if( !empty( $email ) ) {
285
+ $updateEmailArgs = array(
286
+ 'ID' => $user_id,
287
+ 'user_email' => $email
288
+ );
289
+ wp_update_user( $updateEmailArgs );
290
+ }
291
+
292
+ $created = false;
293
+ }
294
+ elseif( email_exists( $email ) && $allow_multiple_accounts == "not_allowed" ){ // if the email is registered, we take the user from this and we don't allow repeated emails
295
+ if( $update_existing_users == 'no' ){
296
+ continue;
297
+ }
298
+
299
+ $user_object = get_user_by( "email", $email );
300
+ $user_id = $user_object->ID;
301
+
302
+ $data[0] = __( 'User already exists as:', 'import-users-from-csv-with-meta' ) . $user_object->user_login . '<br/>' . __( '(in this CSV file is called:', 'import-users-from-csv-with-meta' ) . $username . ")";
303
+ $problematic_row = true;
304
+ $error_importing = true;
305
+
306
+ if( $password !== "" )
307
+ wp_set_password( $password, $user_id );
308
+
309
+ $created = false;
310
+ }
311
+ elseif( email_exists( $email ) && $allow_multiple_accounts == "allowed" ){ // if the email is registered and repeated emails are allowed
312
+ // if user is new, but the password in csv is empty, generate a password for this user
313
+ if( $password === "" ) {
314
+ $password = wp_generate_password( apply_filters( 'acui_auto_password_length', 12 ), apply_filters( 'acui_auto_password_special_chars', true ), apply_filters( 'acui_auto_password_extra_special_chars', false ) );
315
+ }
316
+
317
+ $hacked_email = acui_hack_email( $email );
318
+ $user_id = wp_create_user( $username, $password, $hacked_email );
319
+ acui_hack_restore_remapped_email_address( $user_id, $email );
320
+ }
321
+ else{
322
+ // if user is new, but the password in csv is empty, generate a password for this user
323
+ if( $password === "" ) {
324
+ $password = wp_generate_password( apply_filters( 'acui_auto_password_length', 12 ), apply_filters( 'acui_auto_password_special_chars', true ), apply_filters( 'acui_auto_password_extra_special_chars', false ) );
325
+ }
326
+
327
+ $user_id = wp_create_user( $username, $password, $email );
328
+ }
329
+
330
+ if( is_wp_error( $user_id ) ){ // in case the user is generating errors after this checks
331
+ $error_string = $user_id->get_error_message();
332
+ echo '<script>alert("' . __( 'Problems with user:', 'import-users-from-csv-with-meta' ) . $username . __( ', we are going to skip. \r\nError: ', 'import-users-from-csv-with-meta') . $error_string . '");</script>';
333
+ $error_importing = true;
334
+ continue;
335
+ }
336
+
337
+ $users_registered[] = $user_id;
338
+ $user_object = new WP_User( $user_id );
339
+
340
+ if( $created || $update_roles_existing_users != 'no' ){
341
+ if(!( in_array("administrator", acui_get_roles($user_id), FALSE) || is_multisite() && is_super_admin( $user_id ) )){
342
+
343
+ if( $update_roles_existing_users == 'yes' || $created ){
344
+ $default_roles = $user_object->roles;
345
+ foreach ( $default_roles as $default_role ) {
346
+ $user_object->remove_role( $default_role );
347
+ }
348
+
349
+ if( !empty( $role ) ){
350
+ if( is_array( $role ) ){
351
+ foreach ($role as $single_role) {
352
+ $user_object->add_role( $single_role );
353
+ }
354
+ }
355
+ else{
356
+ $user_object->add_role( $role );
357
+ }
358
+ }
359
+
360
+ $invalid_roles = array();
361
+ if( !empty( $role ) ){
362
+ if( !is_array( $role ) ){
363
+ $role_tmp = $role;
364
+ $role = array();
365
+ $role[] = $role_tmp;
366
+ }
367
+
368
+ foreach ($role as $single_role) {
369
+ $single_role = strtolower($single_role);
370
+ if( get_role( $single_role ) ){
371
+ $user_object->add_role( $single_role );
372
+ }
373
+ else{
374
+ $invalid_roles[] = trim( $single_role );
375
+ }
376
+ }
377
+ }
378
+
379
+ if ( !empty( $invalid_roles ) ){
380
+ $problematic_row = true;
381
+ $error_importing = true;
382
+ if( count( $invalid_roles ) == 1 )
383
+ $data[0] = __('Invalid role','import-users-from-csv-with-meta').' (' . reset( $invalid_roles ) . ')';
384
+ else
385
+ $data[0] = __('Invalid roles','import-users-from-csv-with-meta').' (' . implode( ', ', $invalid_roles ) . ')';
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ // Multisite add user to current blog
392
+ if( is_multisite() ){
393
+ if( !empty( $role ) ){
394
+ if( is_array( $role ) ){
395
+ foreach ($role as $single_role) {
396
+ add_user_to_blog( get_current_blog_id(), $user_id, $single_role );
397
+ }
398
+ }
399
+ else{
400
+ add_user_to_blog( get_current_blog_id(), $user_id, $role );
401
+ }
402
+ }
403
+ }
404
+
405
+ // WP Members activation
406
+ if( $activate_users_wp_members == "activate" )
407
+ update_user_meta( $user_id, "active", true );
408
+
409
+ // New User Approve
410
+ if( $approve_users_new_user_appove == "approve" )
411
+ update_user_meta( $user_id, "pw_user_status", "approved" );
412
+ else
413
+ update_user_meta( $user_id, "pending", true );
414
+
415
+ if( $columns > 2 ){
416
+ for( $i = 2 ; $i < $columns; $i++ ):
417
+ $data[$i] = apply_filters( 'pre_acui_import_single_user_single_data', $data[$i], $headers[$i], $i);
418
+
419
+ if( !empty( $data ) ){
420
+ if( strtolower( $headers[ $i ] ) == "password" ){ // passwords -> continue
421
+ continue;
422
+ }
423
+ elseif( strtolower( $headers[ $i ] ) == "user_pass" ){ // hashed pass
424
+ $wpdb->update( $wpdb->users, array( 'user_pass' => wp_slash( $data[ $i ] ) ), array( 'ID' => $user_id ) );
425
+ wp_cache_delete( $user_id, 'users' );
426
+ continue;
427
+ }
428
+ elseif( in_array( $headers[ $i ], $wp_users_fields ) ){ // wp_user data
429
+ if( empty( $data[ $i ] ) && $empty_cell_action == "leave" ){
430
+ continue;
431
+ }
432
+ else{
433
+ wp_update_user( array( 'ID' => $user_id, $headers[ $i ] => $data[ $i ] ) );
434
+ continue;
435
+ }
436
+ }
437
+ elseif( strtolower( $headers[ $i ] ) == "wp-access-areas" && is_plugin_active( 'wp-access-areas/wp-access-areas.php' ) ){ // wp-access-areas
438
+ $active_labels = array_map( 'trim', explode( "#", $data[ $i ] ) );
439
+
440
+ foreach( $wpaa_labels as $wpa_label ){
441
+ if( in_array( $wpa_label->cap_title , $active_labels )){
442
+ acui_set_cap_for_user( $wpa_label->capability , $user_object , true );
443
+ }
444
+ else{
445
+ acui_set_cap_for_user( $wpa_label->capability , $user_object , false );
446
+ }
447
+ }
448
+
449
+ continue;
450
+ }
451
+ elseif( ( $bpf_pos = array_search( $headers[ $i ], $buddypress_fields ) ) !== false ){ // buddypress
452
+ switch( $buddypress_types[ $bpf_pos ] ){
453
+ case 'datebox':
454
+ $date = $data[$i];
455
+ switch( true ){
456
+ case is_numeric( $date ):
457
+ $UNIX_DATE = ($date - 25569) * 86400;
458
+ $datebox = gmdate("Y-m-d H:i:s", $UNIX_DATE);break;
459
+ case preg_match('/(\d{1,2})[\/-](\d{1,2})[\/-]([4567890]{1}\d{1})/',$date,$match):
460
+ $match[3]='19'.$match[3];
461
+ case preg_match('/(\d{1,2})[\/-](\d{1,2})[\/-](20[4567890]{1}\d{1})/',$date,$match):
462
+ case preg_match('/(\d{1,2})[\/-](\d{1,2})[\/-](19[4567890]{1}\d{1})/',$date,$match):
463
+ $datebox= ($match[3].'-'.$match[2].'-'.$match[1]);
464
+ break;
465
+
466
+ default:
467
+ $datebox = $date;
468
+ }
469
+
470
+ $datebox = strtotime( $datebox );
471
+ xprofile_set_field_data( $headers[$i], $user_id, date( 'Y-m-d H:i:s', $datebox ) );
472
+ unset( $datebox );
473
+ break;
474
+ default:
475
+ xprofile_set_field_data( $headers[$i], $user_id, $data[$i] );
476
+ }
477
+
478
+ continue;
479
+ }
480
+ elseif( $headers[ $i ] == 'bp_group' ){ // buddypress group
481
+ $groups = explode( ',', $data[ $i ] );
482
+ $groups_role = explode( ',', $data[ $positions[ 'bp_group_role' ] ] );
483
+
484
+ for( $j = 0; $j < count( $groups ); $j++ ){
485
+ $group_id = BP_Groups_Group::group_exists( $groups[ $j ] );
486
+
487
+ if( !empty( $group_id ) ){
488
+ groups_join_group( $group_id, $user_id );
489
+
490
+ if( $groups_role[ $j ] == 'Moderator' ){
491
+ groups_promote_member( $user_id, $group_id, 'mod' );
492
+ }
493
+ elseif( $groups_role[ $j ] == 'Administrator' ){
494
+ groups_promote_member( $user_id, $group_id, 'admin' );
495
+ }
496
+ }
497
+ }
498
+
499
+ continue;
500
+ }
501
+ elseif( $headers[ $i ] == 'bp_group_role' ){
502
+ continue;
503
+ }
504
+ else{ // wp_usermeta data
505
+
506
+ if( $data[ $i ] === '' ){
507
+ if( $empty_cell_action == "delete" )
508
+ delete_user_meta( $user_id, $headers[ $i ] );
509
+ else
510
+ continue;
511
+ }
512
+ else{
513
+ update_user_meta( $user_id, $headers[ $i ], $data[ $i ] );
514
+ continue;
515
+ }
516
+ }
517
+
518
+ }
519
+ endfor;
520
+ }
521
+
522
+ do_action('post_acui_import_single_user', $headers, $data, $user_id );
523
+
524
+ $styles = "";
525
+ if( $problematic_row )
526
+ $styles = "background-color:red; color:white;";
527
+
528
+ echo "<tr style='$styles' ><td>" . ($row - 1) . "</td>";
529
+ foreach ($data as $element){
530
+ if( is_array( $element ) )
531
+ $element = implode ( ',' , $element );
532
+
533
+ echo "<td>$element</td>";
534
+ }
535
+
536
+ echo "</tr>\n";
537
+
538
+ flush();
539
+
540
+ $mail_for_this_user = false;
541
+ if( $is_cron ){
542
+ if( get_option( "acui_cron_send_mail" ) ){
543
+ if( $created || ( !$created && get_option( "acui_cron_send_mail_updated" ) ) ){
544
+ $mail_for_this_user = true;
545
+ }
546
+ }
547
+ }
548
+ elseif( $is_frontend ){
549
+ if( get_option( "acui_frontend_send_mail" ) ){
550
+ if( $created || ( !$created && get_option( "acui_frontend_send_mail_updated" ) ) ){
551
+ $mail_for_this_user = true;
552
+ }
553
+ }
554
+ }
555
+ else{
556
+ if( isset( $form_data["sends_email"] ) && $form_data["sends_email"] ){
557
+ if( $created || ( !$created && ( isset( $form_data["send_email_updated"] ) && $form_data["send_email_updated"] ) ) )
558
+ $mail_for_this_user = true;
559
+ }
560
+ }
561
+
562
+ // send mail
563
+ if( isset( $mail_for_this_user ) && $mail_for_this_user ):
564
+ $key = get_password_reset_key( $user_object );
565
+ $user_login= $user_object->user_login;
566
+
567
+ $body_mail = get_option( "acui_mail_body" );
568
+ $subject = get_option( "acui_mail_subject" );
569
+
570
+ $body_mail = str_replace( "**loginurl**", wp_login_url(), $body_mail );
571
+ $body_mail = str_replace( "**username**", $user_login, $body_mail );
572
+ $body_mail = str_replace( "**lostpasswordurl**", wp_lostpassword_url(), $body_mail );
573
+
574
+ if( !is_wp_error( $key ) ){
575
+ $passwordreseturl = apply_filters( 'acui_email_passwordreseturl', network_site_url( 'wp-login.php?action=rp&key=' . $key . '&login=' . rawurlencode( $user_login ), 'login' ) );
576
+ $body_mail = str_replace( "**passwordreseturl**", $passwordreseturl, $body_mail );
577
+ }
578
+
579
+ if( empty( $password ) && !$created )
580
+ $password = __( 'Password has not been changed', 'import-users-from-csv-with-meta' );
581
+
582
+ $body_mail = str_replace("**password**", $password, $body_mail);
583
+ $body_mail = str_replace("**email**", $email, $body_mail);
584
+
585
+ foreach ( $wp_users_fields as $wp_users_field ) {
586
+ if( $positions[ $wp_users_field ] != false && $wp_users_field != "password" ){
587
+ $body_mail = str_replace("**" . $wp_users_field . "**", $data[ $positions[ $wp_users_field ] ] , $body_mail);
588
+ }
589
+ }
590
+
591
+ for( $i = 0 ; $i < count( $headers ); $i++ ) {
592
+ $body_mail = str_replace("**" . $headers[ $i ] . "**", $data[ $i ] , $body_mail);
593
+ }
594
+
595
+ $body_mail = wpautop( $body_mail );
596
+ $headers_mail = array();
597
+ $headers_mail = apply_filters( 'acui_import_email_headers', $headers_mail, $headers, $data );
598
+
599
+ $attachments = array();
600
+ $attachment_id = get_option( 'acui_mail_attachment_id' );
601
+ if( !empty( $attachment_id ) )
602
+ $attachments[] = get_attached_file( $attachment_id );
603
+
604
+ add_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
605
+
606
+ if( get_option( "acui_settings" ) == "plugin" ){
607
+ add_action( 'phpmailer_init', 'acui_mailer_init' );
608
+ add_filter( 'wp_mail_from', 'acui_mail_from' );
609
+ add_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
610
+
611
+ wp_mail( apply_filters( 'acui_import_email_to', $email, $headers, $data ), $subject, $body_mail, $headers_mail, $attachments );
612
+
613
+ remove_filter( 'wp_mail_from', 'acui_mail_from' );
614
+ remove_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
615
+ remove_action( 'phpmailer_init', 'acui_mailer_init' );
616
+ }
617
+ else
618
+ wp_mail( apply_filters( 'acui_import_email_to', $email, $headers, $data ), $subject, $body_mail, $headers_mail );
619
+
620
+ remove_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
621
+ endif;
622
+
623
+ endif;
624
+
625
+ $row++;
626
+ endwhile;
627
+
628
+ // let the filter of default WordPress emails as it were before deactivating them
629
+ if( !get_option('acui_automatic_wordpress_email') ){
630
+ remove_filter( 'send_email_change_email', 'acui_return_false', 999 );
631
+ remove_filter( 'send_password_change_email', 'acui_return_false', 999 );
632
+ }
633
+
634
+ if( $attach_id != 0 )
635
+ wp_delete_attachment( $attach_id );
636
+
637
+ // delete all users that have not been imported
638
+ $delete_users_flag = false;
639
+ $change_role_not_present_flag = false;
640
+
641
+ if( $delete_users == 'yes' ){
642
+ $delete_users_flag = true;
643
+ }
644
+
645
+ if( $is_cron && get_option( "acui_cron_delete_users" ) ){
646
+ $delete_users_flag = true;
647
+ $delete_users_assign_posts = get_option( "acui_cron_delete_users_assign_posts");
648
+ }
649
+
650
+ if( $is_frontend && get_option( "acui_frontend_delete_users" ) ){
651
+ $delete_users_flag = true;
652
+ $delete_users_assign_posts = get_option( "acui_frontend_delete_users_assign_posts");
653
+ }
654
+
655
+ if( $change_role_not_present == 'yes' ){
656
+ $change_role_not_present_flag = true;
657
+ }
658
+
659
+ if( $is_cron && get_option( "acui_cron_change_role_not_present" ) ){
660
+ $change_role_not_present_flag = true;
661
+ $change_role_not_present_role = get_option( "acui_cron_change_role_not_present_role");
662
+ }
663
+
664
+ if( $is_frontend && get_option( "acui_frontend_change_role_not_present" ) ){
665
+ $change_role_not_present_flag = true;
666
+ $change_role_not_present_role = get_option( "acui_frontend_change_role_not_present_role");
667
+ }
668
+
669
+ if( $error_importing ){ // if there is some problem of some kind importing we won't proceed with delete or changing role to users not present to avoid problems
670
+ $delete_users_flag = false;
671
+ $change_role_not_present_flag = false;
672
+ }
673
+
674
+ if( $delete_users_flag ):
675
+ require_once( ABSPATH . 'wp-admin/includes/user.php');
676
+
677
+ $all_users = get_users( array(
678
+ 'fields' => array( 'ID' ),
679
+ 'role__not_in' => array( 'administrator' )
680
+ ) );
681
+
682
+ foreach ( $all_users as $user ) {
683
+ if( !in_array( $user->ID, $users_registered ) ){
684
+ if( !empty( $delete_users_assign_posts ) && get_userdata( $delete_users_assign_posts ) !== false ){
685
+ wp_delete_user( $user->ID, $delete_users_assign_posts );
686
+ }
687
+ else{
688
+ wp_delete_user( $user->ID );
689
+ }
690
+ }
691
+ }
692
+ endif;
693
+
694
+ if( $change_role_not_present ):
695
+ require_once( ABSPATH . 'wp-admin/includes/user.php');
696
+
697
+ $all_users = get_users( array(
698
+ 'fields' => array( 'ID' ),
699
+ 'role__not_in' => array( 'administrator' )
700
+ ) );
701
+
702
+ foreach ( $all_users as $user ) {
703
+ if( !in_array( $user->ID, $users_registered ) ){
704
+ $user_object = new WP_User( $user->ID );
705
+ $user_object->set_role( $change_role_not_present_role );
706
+ }
707
+ }
708
+ endif;
709
+ ?>
710
+ </table>
711
+
712
+ <?php if( !$is_frontend ): ?>
713
+ <br/>
714
+ <p><?php _e( 'Process finished you can go', 'import-users-from-csv-with-meta' ); ?> <a href="<?php echo get_admin_url( null, 'users.php' ); ?>"><?php _e( 'here to see results', 'import-users-from-csv-with-meta' ); ?></a></p>
715
+ <?php endif; ?>
716
+
717
+ <?php
718
+ ini_set('auto_detect_line_endings',FALSE);
719
+
720
+ do_action( 'after_acui_import_users' );
721
+ ?>
722
+ </div>
723
+ <?php
724
+ }
725
+
726
+ function acui_options(){
727
+ global $acui_url_plugin;
728
+
729
+ if ( !current_user_can('create_users') ) {
730
+ wp_die( __( 'You are not allowed to see this content.', 'import-users-from-csv-with-meta' ));
731
+ }
732
+
733
+ if ( isset ( $_GET['tab'] ) )
734
+ $tab = $_GET['tab'];
735
+ else
736
+ $tab = 'homepage';
737
+
738
+
739
+ if( isset( $_POST ) && !empty( $_POST ) ):
740
+ switch ( $tab ){
741
+ case 'homepage':
742
+ acui_fileupload_process( $_POST, false );
743
+ return;
744
+ break;
745
+
746
+ case 'frontend':
747
+ acui_manage_frontend_process( $_POST );
748
+ break;
749
+
750
+ case 'columns':
751
+ acui_manage_extra_profile_fields( $_POST );
752
+ break;
753
+
754
+ case 'mail-options':
755
+ acui_save_mail_template( $_POST );
756
+ break;
757
+
758
+ case 'cron':
759
+ acui_manage_cron_process( $_POST );
760
+ break;
761
+
762
+ }
763
+
764
+ endif;
765
+
766
+ if ( isset ( $_GET['tab'] ) )
767
+ acui_admin_tabs( $_GET['tab'] );
768
+ else
769
+ acui_admin_tabs('homepage');
770
+
771
+ switch ( $tab ){
772
+ case 'homepage' :
773
+ ACUI_Homepage::admin_gui();
774
+ break;
775
+
776
+ case 'frontend':
777
+ ACUI_Frontend::admin_gui();
778
+ break;
779
+
780
+ case 'columns':
781
+ ACUI_Columns::admin_gui();
782
+ break;
783
+
784
+ case 'doc':
785
+ ACUI_Doc::message();
786
+ break;
787
+
788
+ case 'mail-options':
789
+ ACUI_Email_Options::admin_gui();
790
+ break;
791
+
792
+ case 'cron':
793
+ ACUI_Cron::admin_gui();
794
+ break;
795
+
796
+ case 'donate':
797
+ ACUI_Donate::message();
798
+ break;
799
+
800
+ case 'help':
801
+ ACUI_Help::message();
802
+ break;
803
+
804
+ default:
805
+ do_action( 'acui_tab_action_' . $tab );
806
+ break;
807
+ }
808
+ }
trunk/include/shortcode-frontend.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ add_shortcode( 'import-users-from-csv-with-meta', 'acui_frontend' );
3
+ function acui_frontend() {
4
+ ob_start();
5
+
6
+ if( !current_user_can( 'create_users' ) )
7
+ die( __( 'Only users who are able to create users can manage this form.', 'import-users-from-csv-with-meta' ) );
8
+
9
+ if ( $_FILES && !empty( $_POST ) ) {
10
+ $nonce = $_POST['acui_nonce'];
11
+ if ( !isset( $nonce ) || !wp_verify_nonce( $nonce, 'codection-security' ) )
12
+ die( 'Nonce check failed' );
13
+
14
+ foreach ( $_FILES as $file => $array ) {
15
+ $csv_file_id = acui_frontend_upload_file( $file );
16
+
17
+ $form_data = array();
18
+ $form_data[ "path_to_file" ] = get_attached_file( $csv_file_id );
19
+ $form_data[ "role" ] = get_option( "acui_frontend_role");
20
+ $form_data[ "empty_cell_action" ] = "leave";
21
+
22
+ acui_fileupload_process( $form_data, false, true );
23
+
24
+ wp_delete_attachment( $csv_file_id, true );
25
+
26
+ continue;
27
+ }
28
+ }
29
+ ?>
30
+ <form method="POST" enctype="multipart/form-data" action="" accept-charset="utf-8" class="acui_frontend_form">
31
+ <label><?php _e( 'CSV file <span class="description">(required)</span>', 'import-users-from-csv-with-meta' ); ?></label></th>
32
+ <input class="acui_frontend_file" type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
33
+ <input class="acui_frontend_submit" type="submit" value="<?php _e( 'Upload and process', 'import-users-from-csv-with-meta' ); ?>"/>
34
+
35
+ <?php wp_nonce_field( 'codection-security', 'acui_nonce' ); ?>
36
+ </form>
37
+ <?php
38
+ return ob_get_clean();
39
+ }
40
+
41
+ function acui_frontend_upload_file( $file_handler ) {
42
+ if ( $_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK ) {
43
+ __return_false();
44
+ }
45
+ require_once( ABSPATH . "wp-admin" . '/includes/image.php' );
46
+ require_once( ABSPATH . "wp-admin" . '/includes/file.php' );
47
+ require_once( ABSPATH . "wp-admin" . '/includes/media.php' );
48
+ $attach_id = media_handle_upload( $file_handler, 0 );
49
+ return $attach_id;
50
+ }
trunk/languages/import-users-from-csv-with-meta-de_DE.mo ADDED
Binary file
trunk/languages/import-users-from-csv-with-meta-de_DE.po ADDED
@@ -0,0 +1,1151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # WordPress Blank Pot
2
+ # Copyright (C) 2014 ...
3
+ # This file is distributed under the GNU General Public License v2 or later.
4
+ msgid ""
5
+ msgstr ""
6
+ "Project-Id-Version: WordPress Blank Pot v1.0.0\n"
7
+ "Report-Msgid-Bugs-To: Translator Name <translations@example.com>\n"
8
+ "POT-Creation-Date: 2016-11-07 21:17+0100\n"
9
+ "PO-Revision-Date: \n"
10
+ "Language-Team: Your Team <translations@example.com>\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Textdomain-Support: yesX-Generator: Poedit 1.6.4\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;"
18
+ "esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
+ "_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2\n"
20
+ "X-Poedit-Basepath: ..\n"
21
+ "X-Generator: Poedit 1.8.9\n"
22
+ "Last-Translator: \n"
23
+ "Language: de_DE\n"
24
+ "X-Poedit-SearchPath-0: .\n"
25
+
26
+ #: smtp.php:26 smtp.php:245
27
+ msgid "Send Test"
28
+ msgstr "Test senden"
29
+
30
+ #: smtp.php:40
31
+ msgid "Test mail to "
32
+ msgstr "Test-Mail an"
33
+
34
+ #: smtp.php:41
35
+ msgid ""
36
+ "This is a test email generated by the Import User From CSV With Meta "
37
+ "WordPress plugin."
38
+ msgstr ""
39
+ "Dies ist eine Test-Email erzeugt vom Plugin \"Import Benutzer aus CSV mit "
40
+ "Meta\"."
41
+
42
+ #: smtp.php:79
43
+ msgid "Message sent successfully"
44
+ msgstr "Nachricht erfolgreich gesendet"
45
+
46
+ #: smtp.php:83
47
+ msgid "Test Message Sent"
48
+ msgstr "Nachricht gesendet"
49
+
50
+ #: smtp.php:84
51
+ msgid "The result was:"
52
+ msgstr "Das Ergebnis war:"
53
+
54
+ #: smtp.php:86
55
+ msgid "The full debugging output is shown below:"
56
+ msgstr "Die vollständige Debugausgabe ist nachfolgend dargestellt:"
57
+
58
+ #: smtp.php:88
59
+ msgid "The SMTP debugging output is shown below:"
60
+ msgstr "Die SMTP-Debugausgabe ist nachfolgend dargestellt:"
61
+
62
+ #: smtp.php:119
63
+ msgid "Import User From CSV With Meta - SMTP server options"
64
+ msgstr "SMTP-Server-Optionen"
65
+
66
+ #: smtp.php:123
67
+ msgid "Global options"
68
+ msgstr "Allgemeine Optionen"
69
+
70
+ #: smtp.php:124
71
+ msgid ""
72
+ "Do you want to use your own SMTP settings for this plugin or the WordPress "
73
+ "settings."
74
+ msgstr "Eigene SMTP-Einstellungen oder WordPress-Einstellungen verwenden."
75
+
76
+ #: smtp.php:128
77
+ msgid "Settings"
78
+ msgstr "Einstellungen"
79
+
80
+ #: smtp.php:131
81
+ msgid "Use plugin SMTP settings"
82
+ msgstr "SMTP-Einstellungen des Plugins verwenden"
83
+
84
+ #: smtp.php:133
85
+ msgid "Use this settings to send mail."
86
+ msgstr "Diese Einstellungen zum Mailversand verwenden."
87
+
88
+ #: smtp.php:135
89
+ msgid "Use WordPress general settings to send mail."
90
+ msgstr "Allgemeine WordPress-Einstellungen zum Mailversand verwenden."
91
+
92
+ #: smtp.php:143
93
+ msgid "From Email"
94
+ msgstr "Emailadresse des Absenders"
95
+
96
+ #: smtp.php:145
97
+ msgid ""
98
+ "You can specify the email address that emails should be sent from. If you "
99
+ "leave this blank, the default email will be used."
100
+ msgstr ""
101
+ "Absenderadresse festlegen. Falls leer, wird die Default-Emailadresse "
102
+ "verwendet."
103
+
104
+ #: smtp.php:145
105
+ msgid ""
106
+ "<strong>Please Note:</strong> You appear to be using a version of WordPress "
107
+ "prior to 2.3. Please ignore the From Name field and instead enter Name&lt;"
108
+ "email@domain.com&gt; in this field."
109
+ msgstr ""
110
+ "<strong>Achtung</strong>Anscheinend wird eine WordPressversion vor 2.3 "
111
+ "verwendet. Ignoriere das Feld \"Absendername\" und füge statt dessen Name&lt;"
112
+ "email@domain.com&gt; in dieses Feld."
113
+
114
+ #: smtp.php:148
115
+ msgid "From Name"
116
+ msgstr "Absendername"
117
+
118
+ #: smtp.php:150
119
+ msgid ""
120
+ "You can specify the name that emails should be sent from. If you leave this "
121
+ "blank, the emails will be sent from WordPress."
122
+ msgstr ""
123
+ "Absendernamen festlegen. Falls leer, werden die Emails von WordPress "
124
+ "gesendet."
125
+
126
+ #: smtp.php:156 smtp.php:159
127
+ msgid "Mailer"
128
+ msgstr "Mailer"
129
+
130
+ #: smtp.php:161
131
+ msgid "Send emails of this plugin via SMTP."
132
+ msgstr "Emails dieses Plugins per SMTP senden."
133
+
134
+ #: smtp.php:163
135
+ msgid "Use the PHP mail() function to send emails."
136
+ msgstr "Die PHP mail() Funktion zum Emailversand verwenden."
137
+
138
+ #: smtp.php:171 smtp.php:174
139
+ msgid "Return Path"
140
+ msgstr "Antwort an"
141
+
142
+ #: smtp.php:176
143
+ msgid "Set the return-path to match the From Email"
144
+ msgstr "\"Antowrt an\" auf Absenderadresse setzen"
145
+
146
+ #: smtp.php:182
147
+ msgid "SMTP Options"
148
+ msgstr "SMTP Optionen"
149
+
150
+ #: smtp.php:183
151
+ msgid "These options only apply if you have chosen to send mail by SMTP above."
152
+ msgstr "Diese Optionen werden nur angewendet, wenn SMTP ausgewählt wurde."
153
+
154
+ #: smtp.php:187
155
+ msgid "SMTP Host"
156
+ msgstr "SMTP Host"
157
+
158
+ #: smtp.php:191
159
+ msgid "SMTP Port"
160
+ msgstr "SMTP Port"
161
+
162
+ #: smtp.php:195 smtp.php:198
163
+ msgid "Encryption"
164
+ msgstr "Verschlüsselung"
165
+
166
+ #: smtp.php:200
167
+ msgid "No encryption."
168
+ msgstr "Keine Verschlüsselung."
169
+
170
+ #: smtp.php:202
171
+ msgid "Use SSL encryption."
172
+ msgstr "SSL Verschlüsselung verwenden."
173
+
174
+ #: smtp.php:204
175
+ msgid ""
176
+ "Use TLS encryption. This is not the same as STARTTLS. For most servers SSL "
177
+ "is the recommended option."
178
+ msgstr ""
179
+ "TLS Verschlüsselung verwenden. Nicht identisch mit STARTTLS. Meist wird SSL "
180
+ "empfohlen."
181
+
182
+ #: smtp.php:208
183
+ msgid "Authentication"
184
+ msgstr "Authentifizerung"
185
+
186
+ #: smtp.php:211
187
+ msgid "No: Do not use SMTP authentication."
188
+ msgstr "Nein: Authentifizerung nicht verwenden."
189
+
190
+ #: smtp.php:213
191
+ msgid "Yes: Use SMTP authentication."
192
+ msgstr "Ja: Authentifizerung verwenden."
193
+
194
+ #: smtp.php:214
195
+ msgid "If this is set to no, the values below are ignored."
196
+ msgstr "Falls nein gesetzt ist, werden die folgenden Eingaben ignoriert."
197
+
198
+ #: smtp.php:218 importer.php:830 import-users-from-csv-with-meta.php:52
199
+ #: import-users-from-csv-with-meta.php:195
200
+ msgid "Username"
201
+ msgstr "Benutzername"
202
+
203
+ #: smtp.php:222 import-users-from-csv-with-meta.php:195
204
+ msgid "Password"
205
+ msgstr "Passwort"
206
+
207
+ #: smtp.php:227
208
+ msgid "Save Changes"
209
+ msgstr "Änderungen speichern"
210
+
211
+ #: smtp.php:234
212
+ msgid "Send a Test Email"
213
+ msgstr "Testemail senden"
214
+
215
+ #: smtp.php:240
216
+ msgid "To:"
217
+ msgstr "An:"
218
+
219
+ #: smtp.php:242
220
+ msgid ""
221
+ "Type an email address here and then click Send Test to generate a test email."
222
+ msgstr ""
223
+ "Eine Emailadresse eingeben und \"Sende Test\" klicken, um eine Testemail zu "
224
+ "erzeugen."
225
+
226
+ #: importer.php:60
227
+ msgid "Ready to registers"
228
+ msgstr "Bereit zu registrieren"
229
+
230
+ #: importer.php:61
231
+ msgid "First row represents the form of sheet"
232
+ msgstr "Erste Zeile enthält das Format der Tabelle"
233
+
234
+ #: importer.php:88
235
+ msgid "File must contain at least 2 columns: username and email"
236
+ msgstr "Mindestens 2 Spalten erforderlich: username und email"
237
+
238
+ #: importer.php:116
239
+ msgid "Inserting and updating data"
240
+ msgstr "Daten werden eingefügt und upgedated"
241
+
242
+ #: importer.php:118
243
+ msgid "Row"
244
+ msgstr "Zeile"
245
+
246
+ #: importer.php:123
247
+ msgid "Row number"
248
+ msgstr "Zeile Nummer"
249
+
250
+ #: importer.php:123
251
+ msgid "does not have the same columns than the header, we are going to skip"
252
+ msgstr "enthält nicht die gleichen Spalten wie Kopfzeile: wird übersprungen"
253
+
254
+ #: importer.php:174
255
+ msgid "Problems with ID"
256
+ msgstr "Probleme mit ID"
257
+
258
+ #: importer.php:174
259
+ msgid ""
260
+ "username is not the same in the CSV and in database, we are going to skip."
261
+ msgstr "username in CSV und Datenbank stimmen nicht überein: wird übersprungen"
262
+
263
+ #: importer.php:222
264
+ msgid "User already exists as:"
265
+ msgstr "Benutzer existiert bereits als:"
266
+
267
+ #: importer.php:222
268
+ msgid "(in this CSV file is called:"
269
+ msgstr "(in der CSV-Datei lautet er:"
270
+
271
+ #: importer.php:248
272
+ msgid "Problems with user:"
273
+ msgstr "Probleme mit Benutzer:"
274
+
275
+ #: importer.php:248
276
+ msgid ", we are going to skip. \\r\\nError: "
277
+ msgstr ", wird übersprungen. \\r\\nFehler: "
278
+
279
+ #: importer.php:368
280
+ msgid "Password has not been changed"
281
+ msgstr "Passwort nicht geändert"
282
+
283
+ #: importer.php:437
284
+ msgid "Process finished you can go"
285
+ msgstr "Vorgang abgeschlossen. Du kannst"
286
+
287
+ #: importer.php:437
288
+ msgid "here to see results"
289
+ msgstr "hier die Ergebnisse sehen"
290
+
291
+ #: importer.php:452
292
+ msgid "You are not allowed to see this content."
293
+ msgstr "Zugriff nicht erlaubt"
294
+
295
+ #: importer.php:498
296
+ msgid "Click to open/close"
297
+ msgstr "Zum Öffnen/Schließen klicken"
298
+
299
+ #: importer.php:502
300
+ msgid "Old CSV files uploaded"
301
+ msgstr "Alte CSV-Datei hochgeladen"
302
+
303
+ #: importer.php:505
304
+ msgid ""
305
+ "For security reasons you should delete this files, probably they would be "
306
+ "visible in the Internet if a bot or someone discover the URL. You can delete "
307
+ "each file or maybe you want delete all CSV files you have uploaded:"
308
+ msgstr ""
309
+ "Aus Sicherheitsgründen sollte diese Datei gelöscht werden, da sie im "
310
+ "Internet sichtbar ist, falls ein bot oder jemand die URL entdeckt. Du kannst "
311
+ "jede Datei oder alle hochgeladenen CSV-Dateien löschen:"
312
+
313
+ #: importer.php:506
314
+ msgid "Delete all CSV files uploaded"
315
+ msgstr "Alle hochgeladenen CSV-Dateien löschen"
316
+
317
+ #: importer.php:516
318
+ msgid "Delete"
319
+ msgstr "Lösche"
320
+
321
+ #: importer.php:525
322
+ msgid ""
323
+ "File must contain at least <strong>2 columns: username and email</strong>. "
324
+ "These should be the first two columns and it should be placed <strong>in "
325
+ "this order: username and email</strong>. If there are more columns, this "
326
+ "plugin will manage it automatically."
327
+ msgstr ""
328
+ "Datei muss zumindest <strong>2 Spalten haben: username und email</strong>. "
329
+ "Diese sollten die ersten beiden Spalten sein und sie sollten in "
330
+ "<strong>dieser Reihenfolge stehen: username und email</strong>. Weitere "
331
+ "Spalten werden vom Plugin automatisch verarbeitet."
332
+
333
+ #: importer.php:526
334
+ msgid ""
335
+ "Please, read carefully how <strong>passwords are managed</strong> and also "
336
+ "take note about capitalization, this plugin is <strong>case sensitive</"
337
+ "strong>."
338
+ msgstr ""
339
+ "Bitte lies sorgfältig, wie <strong>Passwörter gehandhabt werden</strong> und "
340
+ "beachte auch die Groß- und Kleinschreibung, Dieses Plugin ist <strong>case "
341
+ "sensitive</strong>."
342
+
343
+ #: importer.php:529 import-users-from-csv-with-meta.php:96
344
+ #: import-users-from-csv-with-meta.php:202
345
+ msgid "Import users from CSV"
346
+ msgstr "Benutzer aus CSV importieren"
347
+
348
+ #: importer.php:539
349
+ msgid "Update existing users?"
350
+ msgstr "Bestehende Benutzer updaten?"
351
+
352
+ #: importer.php:542 importer.php:571
353
+ msgid "Yes"
354
+ msgstr "Ja"
355
+
356
+ #: importer.php:543 importer.php:570
357
+ msgid "No"
358
+ msgstr "Nein"
359
+
360
+ #: importer.php:549 importer.php:1077
361
+ msgid "Role"
362
+ msgstr "Role"
363
+
364
+ #: importer.php:562
365
+ msgid ""
366
+ "If you choose more than one role, the roles would be assigned correctly but "
367
+ "you should use some plugin like <a href=\"https://wordpress.org/plugins/user-"
368
+ "role-editor/\">User Role Editor</a> to manage them."
369
+ msgstr ""
370
+ "Wird mehr als eine Role gewählt, so werden die Roles korrekt zugewiesen, "
371
+ "aber du solltest ein Plugin wie den <a href=\"https://wordpress.org/plugins/"
372
+ "user-role-editor/\">User Role Editor</a> zur Bearbeitung verwenden."
373
+
374
+ #: importer.php:567
375
+ msgid "Update roles for existing users?"
376
+ msgstr "Roles für bestehende Benutzer upaten?"
377
+
378
+ #: importer.php:577
379
+ msgid "CSV file <span class=\"description\">(required)</span></label>"
380
+ msgstr "CSV Datei <span class=\"description\">(erforderlich)</span></label>"
381
+
382
+ #: importer.php:581
383
+ msgid "<em>or you can choose directly a file from your host,"
384
+ msgstr "<em>oder direkt eine Datei vom Host wählen,"
385
+
386
+ #: importer.php:581 importer.php:585
387
+ msgid "click here"
388
+ msgstr "hier klicken"
389
+
390
+ #: importer.php:584 importer.php:1038 importer.php:1103
391
+ msgid "You have to introduce the path to file, i.e.:"
392
+ msgstr "Du musst den Pfad zur Datei angeben, d.h:"
393
+
394
+ #: importer.php:585
395
+ msgid "or you can upload it directly from your PC"
396
+ msgstr "oder direkt vom PC hochladen"
397
+
398
+ #: importer.php:591
399
+ msgid "What should the plugin do with empty cells?"
400
+ msgstr "Was soll mit leeren Zellen geschehen?"
401
+
402
+ #: importer.php:594
403
+ msgid "Leave the old value for this metadata"
404
+ msgstr "Werte für alte Metadaten behalten"
405
+
406
+ #: importer.php:595
407
+ msgid "Delete the metadata"
408
+ msgstr "Metadaten löschen"
409
+
410
+ #: importer.php:621
411
+ msgid "BuddyPress users"
412
+ msgstr "BuddyPress Benutzer"
413
+
414
+ #: importer.php:622
415
+ msgid ""
416
+ "You can insert any profile from BuddyPress using his name as header. Plugin "
417
+ "will check, before import, which fields are defined in BuddyPress and will "
418
+ "assign it in the update. You can use this fields:"
419
+ msgstr ""
420
+ "Du kannst jedes Profil von BuddyPress einfügen, indem du den name als Header "
421
+ "verwendest. Das Plugin prüft vor dem Import, welche Felder in BuddyPress "
422
+ "definiert sind und weist sie beim Update zu. Du kannst diese Felder "
423
+ "verwenden:"
424
+
425
+ #: importer.php:626
426
+ msgid ""
427
+ "Remember that all date fields have to be imported using a format like this: "
428
+ "2016-01-01 00:00:00"
429
+ msgstr ""
430
+ "Alle zu importierenden Datumsfelder müssen ein solches Format haben: "
431
+ "2016-01-01 00:00:00"
432
+
433
+ #: importer.php:628 importer.php:644 importer.php:661 importer.php:677
434
+ msgid "Only for"
435
+ msgstr "Nur für"
436
+
437
+ #: importer.php:628 importer.php:644 importer.php:661 importer.php:677
438
+ msgid "users"
439
+ msgstr "Benutzer"
440
+
441
+ #: importer.php:640
442
+ msgid "Do not activate users"
443
+ msgstr "Benutzer nicht aktivieren"
444
+
445
+ #: importer.php:641
446
+ msgid "Activate users when they are being imported"
447
+ msgstr "Benutzer beim Import aktivieren"
448
+
449
+ #: importer.php:644
450
+ msgid "WP Members"
451
+ msgstr "WP Members"
452
+
453
+ #: importer.php:654
454
+ msgid "Approve users at the same time is being created"
455
+ msgstr "Benutzer zur gelichen Zeit approbieren"
456
+
457
+ #: importer.php:657
458
+ msgid "Do not approve users"
459
+ msgstr "Benutzer nicht approbieren"
460
+
461
+ #: importer.php:658
462
+ msgid "Approve users when they are being imported"
463
+ msgstr "Benutzer beim Import approbieren"
464
+
465
+ #: importer.php:661
466
+ msgid "New User Approve"
467
+ msgstr "Neue Benutzer approbieren"
468
+
469
+ #: importer.php:671
470
+ msgid "Repeated email in different users?"
471
+ msgstr "Wiederhole email bei verschiedenen Benutzern?"
472
+
473
+ #: importer.php:674
474
+ msgid "Not allowed"
475
+ msgstr "Nicht erlaubt"
476
+
477
+ #: importer.php:675
478
+ msgid "Allowed"
479
+ msgstr "Erlaubt"
480
+
481
+ #: importer.php:677
482
+ msgid "Allow Multiple Accounts"
483
+ msgstr "Erlaube mehrfache Accounts"
484
+
485
+ #: importer.php:677
486
+ msgid ""
487
+ "Allow multiple user accounts to be created having the same email address."
488
+ msgstr "Mehrfache Accounts mit der gleichen Emailadresse erlauben."
489
+
490
+ #: importer.php:686
491
+ msgid "WordPress Access Areas is activated"
492
+ msgstr "WordPress Access Areas aktiviert"
493
+
494
+ #: importer.php:688
495
+ msgid "As user of"
496
+ msgstr "Ein Benutzer von"
497
+
498
+ #: importer.php:688
499
+ msgid "WordPress Access Areas"
500
+ msgstr "WordPress Access Areas"
501
+
502
+ #: importer.php:688
503
+ msgid "you can use the Access Areas created"
504
+ msgstr "Verwende erstellte Access Areas"
505
+
506
+ #: importer.php:688 importer.php:938
507
+ msgid "here"
508
+ msgstr "hier "
509
+
510
+ #: importer.php:688
511
+ msgid ""
512
+ "and use this areas in your own CSV file. Please use the column name "
513
+ "<strong>wp-access-areas</strong> and in each row use <strong>the name that "
514
+ "you have used"
515
+ msgstr ""
516
+ "und verwendie sie in deiner CSV Datei. Verwende den Spaltennamen <strong>wp-"
517
+ "access-areas</strong> und in jeder Zeile den <strong>verwendeten Namen"
518
+
519
+ #: importer.php:688
520
+ msgid ", like this ones:"
521
+ msgstr ", so wie hier:"
522
+
523
+ #: importer.php:697
524
+ msgid ""
525
+ "If you leave this cell empty for some user or the access area indicated "
526
+ "doesn't exist, user won't be assigned to any access area. You can choose "
527
+ "more than one area for each user using pads between them in the same row, i."
528
+ "e.: "
529
+ msgstr ""
530
+ "Wenn diese Zelle leer ist oder die angegebene access area nicht existiert, "
531
+ "wird der Benutzer keiner access area zugeordnet. Für jeden Benutzer kann "
532
+ "mehr als eine area gewählt werden, indem in derselben Zeile pads gesetzt "
533
+ "werden, d.h."
534
+
535
+ #: importer.php:704
536
+ msgid "Send mail"
537
+ msgstr "Mail senden"
538
+
539
+ #: importer.php:706
540
+ msgid "Do you wish to send a mail with credentials and other data?"
541
+ msgstr "Möchten Sie eine Mail mit den Zugangsdaten senden?"
542
+
543
+ #: importer.php:706 importer.php:707
544
+ msgid "yes"
545
+ msgstr "ja"
546
+
547
+ #: importer.php:707
548
+ msgid ""
549
+ "Do you wish to send this mail also to users that are being updated? (not "
550
+ "only to the one which are being created)"
551
+ msgstr ""
552
+ "Soll diese Mail auch an Benutzer gesendet werden, die upgedated wurden (also "
553
+ "nicht nur neu angelegte)"
554
+
555
+ #: importer.php:715
556
+ msgid "Start importing"
557
+ msgstr "Import beginnen"
558
+
559
+ #: importer.php:723
560
+ msgid "Please choose a file"
561
+ msgstr "Bitte Datei wählen"
562
+
563
+ #: importer.php:728
564
+ msgid "Please enter a path to the file"
565
+ msgstr "Bitte Pfad zur Datei angeben"
566
+
567
+ #: importer.php:733
568
+ msgid "Please select a role"
569
+ msgstr "Bitte eine Role auswählen"
570
+
571
+ #: importer.php:740
572
+ msgid "Are you sure to delete this file?"
573
+ msgstr "Diese Datei löschen?"
574
+
575
+ #: importer.php:749
576
+ msgid "There were problems deleting the file, please check file permissions"
577
+ msgstr "Problem beim Löschen der Datei, bitte Berechtigungen prüfen"
578
+
579
+ #: importer.php:751
580
+ msgid "File successfully deleted"
581
+ msgstr "Datei erfolgreich gelöscht"
582
+
583
+ #: importer.php:759
584
+ msgid ""
585
+ "Are you sure to delete ALL CSV files uploaded? There can be CSV files from "
586
+ "other plugins."
587
+ msgstr ""
588
+ "Wirklich ALLE CSV-Dateien löschen? Es könnten auch CSV-Dateien von anderen "
589
+ "Plugins dabei sein."
590
+
591
+ #: importer.php:767
592
+ msgid "There were problems deleting the files, please check files permissions"
593
+ msgstr "Problem beim Löschen der Datei, bitte Berechtigungen prüfen"
594
+
595
+ #: importer.php:769
596
+ msgid "Files successfully deleted"
597
+ msgstr "Dateien erfolgreich gelöscht"
598
+
599
+ #: importer.php:794
600
+ msgid "Custom columns loaded"
601
+ msgstr "Benutzerdefinierte Spalten geladen"
602
+
603
+ #: importer.php:798
604
+ msgid "Columns loaded in previous files"
605
+ msgstr "Benutzerdefinierte Spalten von früheren Dateien"
606
+
607
+ #: importer.php:799
608
+ msgid ""
609
+ "(if you load another CSV with different columns, the new ones will replace "
610
+ "this list)"
611
+ msgstr ""
612
+ "(beim Laden einer anderen CSV-Datei mit unterschiedlichen Spalten ersetzen "
613
+ "die neuen Spalten diese Liste)"
614
+
615
+ #: importer.php:808
616
+ msgid "There is no columns loaded yet"
617
+ msgstr "Noch keine Spalten geladen"
618
+
619
+ #: importer.php:823 import-users-from-csv-with-meta.php:202
620
+ msgid "Documentation"
621
+ msgstr "Dokumentation"
622
+
623
+ #: importer.php:827
624
+ msgid "Columns position"
625
+ msgstr "Spaltenposition"
626
+
627
+ #: importer.php:828
628
+ msgid ""
629
+ "(Documents should look like the one presented into screenshot. Remember you "
630
+ "should fill the first two columns with the next values)"
631
+ msgstr ""
632
+ "(Dateien sollten so aussehen wie die im Screenshot. Die ersten beiden "
633
+ "Spalten sollten mit folgenden Werten gefüllt sein)"
634
+
635
+ #: importer.php:831
636
+ msgid "Email"
637
+ msgstr "Email"
638
+
639
+ #: importer.php:833
640
+ msgid ""
641
+ "(The next columns are totally customizable and you can use whatever you "
642
+ "want. All rows must contains same columns)"
643
+ msgstr ""
644
+ "(Die folgenden Spalten sind benutzerdefiniert und können für beliebige "
645
+ "Zwecke verwendet werden. Alle Zeilen müssen jedoch dieselben Spalten haben)"
646
+
647
+ #: importer.php:834
648
+ msgid "(User profile will be adapted to the kind of data you have selected)"
649
+ msgstr "(Benutzerprofile werden entsprechend der gewählten Daten angepasst)"
650
+
651
+ #: importer.php:835
652
+ msgid ""
653
+ "(If you want to disable the extra profile information, please deactivate "
654
+ "this plugin after make the import)"
655
+ msgstr ""
656
+ "(Um die zusätzlichen Profilinformationen inaktiv zu setzen, deaktivieren Sie "
657
+ "bitte dieses Plugin nach dem Import)"
658
+
659
+ #: importer.php:839
660
+ msgid "id"
661
+ msgstr "id"
662
+
663
+ #: importer.php:840
664
+ msgid ""
665
+ "You can use a column called id in order to make inserts or updates of an "
666
+ "user using the ID used by WordPress in the wp_users table. We have two "
667
+ "different cases:"
668
+ msgstr ""
669
+ "Eine Spalte mit der Bezeichnung \"id\" kann verwendet werden, um Einfügen "
670
+ "oder Update eines Benutzers mittels der ID in der wp_users Tabelle zu "
671
+ "steuern. Zwei Möglichkeiten:"
672
+
673
+ #: importer.php:842
674
+ msgid ""
675
+ "If id <strong>doesn't exist in your users table</strong>: user will be "
676
+ "inserted"
677
+ msgstr ""
678
+ "Wenn die id <strong>nicht in der Benutzertabelle existiert</strong>, wird "
679
+ "der Benutzer hinzugefügt."
680
+
681
+ #: importer.php:843
682
+ msgid ""
683
+ "If id <strong>exists</strong>: plugin check if username is the same, if yes, "
684
+ "it will update the data, if not, it ignores the cell to avoid problems"
685
+ msgstr ""
686
+ "Wenn die id <strong>existiert</strong>, prüft das Plugin, ob der username "
687
+ "identisch ist. Wenn ja, werden die Daten aktualisiert, wenn nein, wird die "
688
+ "Zelle ignoriert, um Probleme zu vermeiden."
689
+
690
+ #: importer.php:848
691
+ msgid "Passwords"
692
+ msgstr "Passwörter"
693
+
694
+ #: importer.php:849
695
+ msgid ""
696
+ "A string that contains user passwords. We have different options for this "
697
+ "case:"
698
+ msgstr "Ein String, der Bentuzerpassworte enthält. Mehrere Möglichkeiten:"
699
+
700
+ #: importer.php:851
701
+ msgid ""
702
+ "If you <strong>don't create a column for passwords</strong>: passwords will "
703
+ "be generated automatically"
704
+ msgstr ""
705
+ "Wird <strong>keine Passwortspalte</strong> gesetzt, dann werden die "
706
+ "Passworte automatisch generiert"
707
+
708
+ #: importer.php:852
709
+ msgid ""
710
+ "If you <strong>create a column for passwords</strong>: if cell is empty, "
711
+ "password won't be updated; if cell has a value, it will be used"
712
+ msgstr ""
713
+ "Wird <strong>eine Passwortspalte gesetzt</strong>, dann gilt: Ist der Inhalt "
714
+ "leer, werden Passwörter nicht verändert, enthält sie einen Wert, wird "
715
+ "dieser benutzt"
716
+
717
+ #: importer.php:857
718
+ msgid "WordPress default profile data"
719
+ msgstr "WordPress Standardprofildaten"
720
+
721
+ #: importer.php:858
722
+ msgid ""
723
+ "You can use those labels if you want to set data adapted to the WordPress "
724
+ "default user columns (the ones who use the function"
725
+ msgstr ""
726
+ "Diese Bezeichnungen können verwendet werden, um Daten in den Standardspalten "
727
+ "der WordPress Bneutzerdatei zu setzen (benutzen die Funktion"
728
+
729
+ #: importer.php:860
730
+ msgid ""
731
+ "A string that contains a URL-friendly name for the user. The default is the "
732
+ "user's username."
733
+ msgstr ""
734
+ "String, der einen URL-fähigen Namen für den Benutzer enthält. Normalerweise "
735
+ "der username."
736
+
737
+ #: importer.php:861
738
+ msgid "A string containing the user's URL for the user's web site."
739
+ msgstr "String, der die URL des Benutzers für seine Webseite enthält."
740
+
741
+ #: importer.php:862
742
+ msgid ""
743
+ "A string that will be shown on the site. Defaults to user's username. It is "
744
+ "likely that you will want to change this, for both appearance and security "
745
+ "through obscurity (that is if you don't use and delete the default admin "
746
+ "user)."
747
+ msgstr ""
748
+ "String, der angezeigt wird. Vorgabe ist der username. Sollte geändert "
749
+ "werden, sowohl für das Erscheinungsbild als auch zur Sicherheit durch "
750
+ "Verschleierung (wenn der vorgegebene Adminbenutzer nicht verwendet und "
751
+ "gelöscht wird)."
752
+
753
+ #: importer.php:863
754
+ msgid "The user's nickname, defaults to the user's username."
755
+ msgstr "Nickname des Benutzers, Vorgabe ist der username."
756
+
757
+ #: importer.php:864
758
+ msgid "The user's first name."
759
+ msgstr "Vorname des Benutzers."
760
+
761
+ #: importer.php:865
762
+ msgid "The user's last name."
763
+ msgstr "Nachname des Benutzers."
764
+
765
+ #: importer.php:866
766
+ msgid "A string containing content about the user."
767
+ msgstr "Text mit Informationen über den Benutzer."
768
+
769
+ #: importer.php:867
770
+ msgid "User's Jabber account."
771
+ msgstr "Jabber account des Benutzers."
772
+
773
+ #: importer.php:868
774
+ msgid "User's AOL IM account."
775
+ msgstr "AOL IM account des Benutzers."
776
+
777
+ #: importer.php:869
778
+ msgid "User's Yahoo IM account."
779
+ msgstr "Yahoo IM account des Benutzers."
780
+
781
+ #: importer.php:870
782
+ msgid "Using the WordPress format for this kind of data Y-m-d H:i:s."
783
+ msgstr "Verwende das WordPress-Format für diese Art der Daten Y-m-d H:i:s"
784
+
785
+ #: importer.php:877
786
+ msgid "WooCommerce is activated"
787
+ msgstr "WooCommerce aktiviert"
788
+
789
+ #: importer.php:878
790
+ msgid ""
791
+ "You can use those labels if you want to set data adapted to the WooCommerce "
792
+ "default user columns"
793
+ msgstr ""
794
+ "Diese Bezeichnungen können verwendet werden, um Daten in den Standardspalten "
795
+ "der WooCommerce Bneutzerdatei zu setzen"
796
+
797
+ #: importer.php:906
798
+ msgid "Important notice"
799
+ msgstr "Wichtige Notiz"
800
+
801
+ #: importer.php:907
802
+ msgid ""
803
+ "You can upload as many files as you want, but all must have the same "
804
+ "columns. If you upload another file, the columns will change to the form of "
805
+ "last file uploaded."
806
+ msgstr ""
807
+ "Es können beliebig viele Dateien hochgeladen werden, aber alle müssen die "
808
+ "gleichen Spalten haben. Wenn eine andere Datei hochgeladen wird, werden die "
809
+ "Spalten an die letzte Datei angepasst."
810
+
811
+ #: importer.php:910
812
+ msgid "Any question about it"
813
+ msgstr "Fragen dazu"
814
+
815
+ #: importer.php:913
816
+ msgid "Free support (in WordPress forums):"
817
+ msgstr "kosenloser Support (im WordPress Forum):"
818
+
819
+ #: importer.php:914
820
+ msgid "Premium support (with a quote):"
821
+ msgstr "Premium Support (kostenpflichtig):"
822
+
823
+ #: importer.php:919
824
+ msgid "Example"
825
+ msgstr "Beispiel"
826
+
827
+ #: importer.php:920
828
+ msgid "Download this"
829
+ msgstr "Lade diese"
830
+
831
+ #: importer.php:920
832
+ msgid "file"
833
+ msgstr "Datei"
834
+
835
+ #: importer.php:920
836
+ msgid "to test"
837
+ msgstr "zum Testen"
838
+
839
+ #: importer.php:936 import-users-from-csv-with-meta.php:202
840
+ msgid "Mail options"
841
+ msgstr "Mail Optionen"
842
+
843
+ #: importer.php:938
844
+ msgid "You can set your own SMTP and other mail details"
845
+ msgstr "Eigene SMTP Optionen und andere Details können gesetzt werden"
846
+
847
+ #: importer.php:943
848
+ msgid "WordPress automatic emails users updated"
849
+ msgstr "Automatische WordPress Emails angepasst"
850
+
851
+ #: importer.php:947
852
+ msgid "Send automattic WordPress emails?"
853
+ msgstr "Automatische WordPress Emails senden?"
854
+
855
+ #: importer.php:951
856
+ msgid ""
857
+ "Deactivate WordPress automattic email when an user is updated or his "
858
+ "password is changed"
859
+ msgstr ""
860
+ "Automatische WordPress Emails deaktivieren, wenn ein Benutzer upgedatet oder "
861
+ "sein Passwort geändert wird"
862
+
863
+ #: importer.php:952
864
+ msgid ""
865
+ "Activate WordPress automattic email when an user is updated or his password "
866
+ "is changed"
867
+ msgstr ""
868
+ "Automatische WordPress Emails aktivieren, wenn ein Benutzer upgedatet oder "
869
+ "sein Passwort geändert wird"
870
+
871
+ #: importer.php:954
872
+ msgid ""
873
+ "When you update an user or change his password, WordPress prepare and send "
874
+ "automattic email, you can deactivate it here."
875
+ msgstr ""
876
+ "Beim Update eines Benutzers oder einer Passwortänderung sendet WordPress "
877
+ "automatisch eine Mail. Das kann hier deaktivert werden"
878
+
879
+ #: importer.php:962
880
+ msgid "Customize the email that can be sent when importing users"
881
+ msgstr "Anpassen der Email, die beim Import gesendet wird"
882
+
883
+ #: importer.php:964
884
+ msgid "Mail subject :"
885
+ msgstr "Betreff:"
886
+
887
+ #: importer.php:972
888
+ msgid "username to login"
889
+ msgstr "Loginname"
890
+
891
+ #: importer.php:973
892
+ msgid "user password"
893
+ msgstr "Passwort"
894
+
895
+ #: importer.php:974
896
+ msgid "current site login url"
897
+ msgstr "URL für Login"
898
+
899
+ #: importer.php:975
900
+ msgid "lost password url"
901
+ msgstr "URL für Passwort vergessen"
902
+
903
+ #: importer.php:976
904
+ msgid "password reset url"
905
+ msgstr "URL für Passwort zurücksetzen"
906
+
907
+ #: importer.php:977
908
+ msgid "user email"
909
+ msgstr "Benutzer Email"
910
+
911
+ #: importer.php:978
912
+ msgid ""
913
+ "You can also use any WordPress user standard field or an own metadata, if "
914
+ "you have used it in your CSV. For example, if you have a first_name column, "
915
+ "you could use **first_name** or any other meta_data like **my_custom_meta**"
916
+ msgstr ""
917
+ "Jedes Standardfeld der WordPress Benutzerdatei und jedes eigene Metadatafeld "
918
+ "kann verwendet werden, sofern es in der CSV-Datei enthalten ist. Wenn eine "
919
+ "Spalte first_name vorhanden ist, kann **first_name** verwendet werden oder "
920
+ "irgend ein Metafeld wie zB **my_custom_meta**"
921
+
922
+ #: importer.php:1029
923
+ msgid "Execute an import of users periodically"
924
+ msgstr "Benutzerimport periodisch ausführen"
925
+
926
+ #: importer.php:1035
927
+ msgid "Path of file that are going to be imported"
928
+ msgstr "Pfad zu den Dateien, die importiert werden sollen"
929
+
930
+ #: importer.php:1037 importer.php:1102
931
+ msgid "Insert complete path to the file"
932
+ msgstr "Kompletten Pfad angeben"
933
+
934
+ #: importer.php:1042
935
+ msgid "Period"
936
+ msgstr "Wiederholung"
937
+
938
+ #: importer.php:1045
939
+ msgid "Hourly"
940
+ msgstr "Stündlich"
941
+
942
+ #: importer.php:1046
943
+ msgid "Twicedaily"
944
+ msgstr "Zweimal pro Tag"
945
+
946
+ #: importer.php:1047
947
+ msgid "Daily"
948
+ msgstr "Täglich"
949
+
950
+ #: importer.php:1049
951
+ msgid "How often the event should reoccur?"
952
+ msgstr "Wie oft soll der Import stattfinden?"
953
+
954
+ #: importer.php:1053
955
+ msgid "Activate periodical import?"
956
+ msgstr "Periodischen Import aktivieren?"
957
+
958
+ #: importer.php:1059
959
+ msgid "Send mail when using periodical import?"
960
+ msgstr "Email nach periodischem Import versenden?"
961
+
962
+ #: importer.php:1065
963
+ msgid "Send mail also to users that are being updated?"
964
+ msgstr "Email auch an Benutzer, die adaptiert wurden?"
965
+
966
+ #: importer.php:1071
967
+ msgid "Delete users that are not present in the CSV?"
968
+ msgstr "Benutzer, die nicht in der CSV-Datei enthalten sind, löschen?"
969
+
970
+ #: importer.php:1091
971
+ msgid "Which role would be used to import users?"
972
+ msgstr "Welche Role soll beim Import zugewiesen werden?"
973
+
974
+ #: importer.php:1095
975
+ msgid "Move file after import?"
976
+ msgstr "Datei nach Import verschieben?"
977
+
978
+ #: importer.php:1108
979
+ msgid "Last actions of schedule task"
980
+ msgstr "Letzte zeitgesteuerte Ausführung"
981
+
982
+ #: importer.php:1114
983
+ msgid "Mail sending"
984
+ msgstr "Mailversand"
985
+
986
+ #: importer.php:1115
987
+ msgid ""
988
+ "Please take care: for this option, cron import, mail sending is not "
989
+ "available in this version (if you need it"
990
+ msgstr ""
991
+ "Achtung: Für diiese Option, zeitgesteuerter Import, ist die Funktion "
992
+ "Mailversand in dieser Version nicht verfügbar (wenn sie benötigt wird"
993
+
994
+ #: importer.php:1115
995
+ msgid "talk with us"
996
+ msgstr "kontaktieren Sie uns"
997
+
998
+ #: importer.php:1119
999
+ msgid "Save schedule options"
1000
+ msgstr "Zeitsteuerungsoptionen speichern"
1001
+
1002
+ #: importer.php:1126
1003
+ msgid ""
1004
+ "Are you sure to delete all users that are not present in the CSV? This "
1005
+ "action cannot be undone."
1006
+ msgstr ""
1007
+ "Wirklich alle Benutzer, die nicht in der CSV-Datei enthalten sind, löschen? "
1008
+ "Diese Aktion kann nicht zurückgenommen werden."
1009
+
1010
+ #: importer.php:1149
1011
+ msgid "Do you like it?"
1012
+ msgstr "Gefällt es Dir?"
1013
+
1014
+ #: importer.php:1152
1015
+ msgid "buy me a coffee"
1016
+ msgstr "zahl mir einen Kaffee"
1017
+
1018
+ #: importer.php:1153 importer.php:1173
1019
+ msgid "Hi! we are"
1020
+ msgstr "Hi! Wir sind"
1021
+
1022
+ #: importer.php:1153 importer.php:1173
1023
+ msgid "and"
1024
+ msgstr "und"
1025
+
1026
+ #: importer.php:1153 importer.php:1173
1027
+ msgid "from"
1028
+ msgstr "von"
1029
+
1030
+ #: importer.php:1153 importer.php:1173
1031
+ msgid "developers of this plugin."
1032
+ msgstr "Entwickler dieses Plugins."
1033
+
1034
+ #: importer.php:1154
1035
+ msgid ""
1036
+ "We have been spending many hours to develop this plugin. <br>If you like and "
1037
+ "use this plugin, you can <strong>buy us a cup of coffee</strong>."
1038
+ msgstr ""
1039
+ "Wir haben viele Stunden in die Entwicklung investiert. <br>Wenn es dir "
1040
+ "gefällt, zahl uns <strong>eine Tasse Kaffee</strong>."
1041
+
1042
+ #: importer.php:1158
1043
+ msgid "PayPal – The safer, easier way to pay online."
1044
+ msgstr "PayPal – der sicherere, einfachere Weg, online zu bezahlen."
1045
+
1046
+ #: importer.php:1170
1047
+ msgid "Need help with WordPress or WooCommerce?"
1048
+ msgstr "Brauchst du Hilfe zu WordPress oder WooCommerce?"
1049
+
1050
+ #: importer.php:1174
1051
+ msgid ""
1052
+ "We work everyday with WordPress and WooCommerce, if you need help hire us, "
1053
+ "send us a message to"
1054
+ msgstr ""
1055
+ "Wir arbeiten täglich mit WordPress und WooCommerce, wenn du Hilfe benötigst, "
1056
+ "beauftrage uns, sende eine Nachricht an"
1057
+
1058
+ #: import-users-from-csv-with-meta.php:51
1059
+ #: import-users-from-csv-with-meta.php:198
1060
+ msgid "Welcome to"
1061
+ msgstr "Willkommen bei"
1062
+
1063
+ #: import-users-from-csv-with-meta.php:52
1064
+ #: import-users-from-csv-with-meta.php:195
1065
+ msgid "Welcome,"
1066
+ msgstr "Willkommen,"
1067
+
1068
+ #: import-users-from-csv-with-meta.php:52
1069
+ #: import-users-from-csv-with-meta.php:195
1070
+ msgid "Your data to login in this site is:"
1071
+ msgstr "Deine Daten zum Login sind:"
1072
+
1073
+ #: import-users-from-csv-with-meta.php:52
1074
+ #: import-users-from-csv-with-meta.php:195
1075
+ msgid "URL to login"
1076
+ msgstr "URL zum Login"
1077
+
1078
+ #: import-users-from-csv-with-meta.php:96
1079
+ msgid "Insert users massively (CSV)"
1080
+ msgstr "Massenimport von Benutzers (CSV)"
1081
+
1082
+ #: import-users-from-csv-with-meta.php:97
1083
+ msgid "SMTP Configuration"
1084
+ msgstr "SMTP Konfiguration"
1085
+
1086
+ #: import-users-from-csv-with-meta.php:103
1087
+ #: import-users-from-csv-with-meta.php:202
1088
+ msgid "Donate"
1089
+ msgstr "Spenden"
1090
+
1091
+ #: import-users-from-csv-with-meta.php:104
1092
+ msgid "Premium support"
1093
+ msgstr "Premium Support"
1094
+
1095
+ #: import-users-from-csv-with-meta.php:105
1096
+ msgid "Premium plugins"
1097
+ msgstr "Premium Plugins"
1098
+
1099
+ #: import-users-from-csv-with-meta.php:202
1100
+ msgid "Customs columns loaded"
1101
+ msgstr "Benutzerdefinierte Spalten geladen"
1102
+
1103
+ #: import-users-from-csv-with-meta.php:202
1104
+ msgid "Cron import"
1105
+ msgstr "Zeitgesteuerter Import"
1106
+
1107
+ #: import-users-from-csv-with-meta.php:202
1108
+ msgid "Shop"
1109
+ msgstr "Shop"
1110
+
1111
+ #: import-users-from-csv-with-meta.php:202
1112
+ msgid "Hire an expert"
1113
+ msgstr "Beauftrage einen Experten"
1114
+
1115
+ #: import-users-from-csv-with-meta.php:242
1116
+ msgid "Error, we cannot find the file"
1117
+ msgstr "Fehler, die Datei wurde nicht gefunden"
1118
+
1119
+ #: import-users-from-csv-with-meta.php:286
1120
+ msgid "Unable to write to directory. Is this directory writable by the server?"
1121
+ msgstr ""
1122
+ "Verzeichnis ist nicht beschreibbar. Ist das Verzeichnis durch den Server "
1123
+ "beschreibbar?"
1124
+
1125
+ #: import-users-from-csv-with-meta.php:294
1126
+ msgid "Error, the file"
1127
+ msgstr "Fehler, die Datei"
1128
+
1129
+ #: import-users-from-csv-with-meta.php:294
1130
+ msgid "could not moved to"
1131
+ msgstr "konnte nicht verschoben werden nach"
1132
+
1133
+ #: import-users-from-csv-with-meta.php:323
1134
+ msgid "Mail template updated correctly"
1135
+ msgstr "Mailvorlage korrekt angepasst"
1136
+
1137
+ #: import-users-from-csv-with-meta.php:370
1138
+ msgid "Settings updated correctly"
1139
+ msgstr "Einstellungen korrekt angepasst"
1140
+
1141
+ #: import-users-from-csv-with-meta.php:376
1142
+ msgid "Import cron task starts at"
1143
+ msgstr "Zeitgesteuerter Import beginnt um"
1144
+
1145
+ #: import-users-from-csv-with-meta.php:397
1146
+ msgid "--Finished at"
1147
+ msgstr "--Beendet um"
1148
+
1149
+ #: import-users-from-csv-with-meta.php:506
1150
+ msgid "You are not an adminstrator"
1151
+ msgstr "Du bist kein Administrator"
trunk/languages/import-users-from-csv-with-meta-fr_FR.mo ADDED
Binary file
trunk/languages/import-users-from-csv-with-meta-fr_FR.po ADDED
@@ -0,0 +1,1188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # WordPress Blank Pot
2
+ # Copyright (C) 2014 ...
3
+ # This file is distributed under the GNU General Public License v2 or later.
4
+ msgid ""
5
+ msgstr ""
6
+ "Project-Id-Version: WordPress Blank Pot v1.0.0\n"
7
+ "Report-Msgid-Bugs-To: Translator Name <translations@example.com>\n"
8
+ "POT-Creation-Date: 2016-11-05 10:32+0100\n"
9
+ "PO-Revision-Date: \n"
10
+ "Language-Team: Your Team <translations@example.com>\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
15
+ "X-Textdomain-Support: yesX-Generator: Poedit 1.6.4\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;"
18
+ "esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
+ "_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2\n"
20
+ "X-Poedit-Basepath: ..\n"
21
+ "X-Generator: Poedit 1.8.7\n"
22
+ "Last-Translator: FreePixel <contact@freepixel.net>\n"
23
+ "Language: fr_FR\n"
24
+ "X-Poedit-SearchPath-0: .\n"
25
+
26
+ #: smtp.php:26 smtp.php:245
27
+ msgid "Send Test"
28
+ msgstr "Envoyer un courriel de test"
29
+
30
+ #: smtp.php:40
31
+ msgid "Test mail to "
32
+ msgstr "Tester le courriel pour"
33
+
34
+ #: smtp.php:41
35
+ msgid ""
36
+ "This is a test email generated by the Import User From CSV With Meta "
37
+ "WordPress plugin."
38
+ msgstr ""
39
+ "Il s'agit d'un test de courrier électronique généré par l'utilisateur "
40
+ "d'importation de CSV avec l’extension Meta WordPress."
41
+
42
+ #: smtp.php:79
43
+ msgid "Message sent successfully"
44
+ msgstr "Message envoyé avec succès"
45
+
46
+ #: smtp.php:83
47
+ msgid "Test Message Sent"
48
+ msgstr "Message de test envoyé"
49
+
50
+ #: smtp.php:84
51
+ msgid "The result was:"
52
+ msgstr "Le résultat est :"
53
+
54
+ #: smtp.php:86
55
+ msgid "The full debugging output is shown below:"
56
+ msgstr "La sortie de débogage complète est montrée ci-dessous :"
57
+
58
+ #: smtp.php:88
59
+ msgid "The SMTP debugging output is shown below:"
60
+ msgstr "La sortie de débogage SMTP est illustrée ci-dessous :"
61
+
62
+ #: smtp.php:119
63
+ msgid "Import User From CSV With Meta - SMTP server options"
64
+ msgstr ""
65
+ "Importer un utilisateur à partir de CSV avec Meta - Options du serveur SMTP"
66
+
67
+ #: smtp.php:123
68
+ msgid "Global options"
69
+ msgstr "Options globales"
70
+
71
+ #: smtp.php:124
72
+ msgid ""
73
+ "Do you want to use your own SMTP settings for this plugin or the WordPress "
74
+ "settings."
75
+ msgstr ""
76
+ "Voulez-vous utiliser vos propres paramètres SMTP pour cette extension ou les "
77
+ "paramètres WordPress."
78
+
79
+ #: smtp.php:128
80
+ msgid "Settings"
81
+ msgstr "Paramètres"
82
+
83
+ #: smtp.php:131
84
+ msgid "Use plugin SMTP settings"
85
+ msgstr "Utiliser les paramètres SMTP de l’extension"
86
+
87
+ #: smtp.php:133
88
+ msgid "Use this settings to send mail."
89
+ msgstr "Utilisez ces paramètres pour envoyer les courriels."
90
+
91
+ #: smtp.php:135
92
+ msgid "Use WordPress general settings to send mail."
93
+ msgstr "Utilisez les paramètres généraux WordPress pour envoyer les courriels."
94
+
95
+ #: smtp.php:143
96
+ msgid "From Email"
97
+ msgstr "Courriel source de l’envoi"
98
+
99
+ #: smtp.php:145
100
+ msgid ""
101
+ "You can specify the email address that emails should be sent from. If you "
102
+ "leave this blank, the default email will be used."
103
+ msgstr ""
104
+ "Vous pouvez spécifier l'adresse courriel à laquelle les messages doivent "
105
+ "être envoyés. Si vous laissez cette case vide, le courriel admin par défaut "
106
+ "sera utilisé."
107
+
108
+ #: smtp.php:145
109
+ msgid ""
110
+ "<strong>Please Note:</strong> You appear to be using a version of WordPress "
111
+ "prior to 2.3. Please ignore the From Name field and instead enter Name&lt;"
112
+ "email@domain.com&gt; in this field."
113
+ msgstr ""
114
+ "<strong>Remarque :</strong> Vous semblez utiliser une version de WordPress < "
115
+ "2.3. Veuillez ignorer le champ de nom et entrez le nom&lt;email@domaine."
116
+ "com&gt; dans ce champ."
117
+
118
+ #: smtp.php:148
119
+ msgid "From Name"
120
+ msgstr "Nom de l’envoyeur"
121
+
122
+ #: smtp.php:150
123
+ msgid ""
124
+ "You can specify the name that emails should be sent from. If you leave this "
125
+ "blank, the emails will be sent from WordPress."
126
+ msgstr ""
127
+ "Vous pouvez spécifier le nom duquel les courriels doivent être envoyés. Si "
128
+ "vous laissez ce champ vide, les courriels seront envoyés à partir de nom "
129
+ "admin WordPress."
130
+
131
+ #: smtp.php:156 smtp.php:159
132
+ msgid "Mailer"
133
+ msgstr "Mailer"
134
+
135
+ #: smtp.php:161
136
+ msgid "Send emails of this plugin via SMTP."
137
+ msgstr "Envoyez des emails de cette extension via SMTP."
138
+
139
+ #: smtp.php:163
140
+ msgid "Use the PHP mail() function to send emails."
141
+ msgstr "Utilisez la fonction PHP mail() pour envoyer des courriels."
142
+
143
+ #: smtp.php:171 smtp.php:174
144
+ msgid "Return Path"
145
+ msgstr "Chemin de retour"
146
+
147
+ #: smtp.php:176
148
+ msgid "Set the return-path to match the From Email"
149
+ msgstr "Définissez le courriel pour correspondre à De"
150
+
151
+ #: smtp.php:182
152
+ msgid "SMTP Options"
153
+ msgstr "Options SMTP"
154
+
155
+ #: smtp.php:183
156
+ msgid "These options only apply if you have chosen to send mail by SMTP above."
157
+ msgstr ""
158
+ "Ces options s'appliquent uniquement si vous avez choisi d'envoyer des "
159
+ "messages par SMTP ci-dessus."
160
+
161
+ #: smtp.php:187
162
+ msgid "SMTP Host"
163
+ msgstr "Hôte SMTP"
164
+
165
+ #: smtp.php:191
166
+ msgid "SMTP Port"
167
+ msgstr "Port SMTP"
168
+
169
+ #: smtp.php:195 smtp.php:198
170
+ msgid "Encryption"
171
+ msgstr "Chiffrement"
172
+
173
+ #: smtp.php:200
174
+ msgid "No encryption."
175
+ msgstr "Pas de chiffrement."
176
+
177
+ #: smtp.php:202
178
+ msgid "Use SSL encryption."
179
+ msgstr "Utiliser le chiffrage SSL."
180
+
181
+ #: smtp.php:204
182
+ msgid ""
183
+ "Use TLS encryption. This is not the same as STARTTLS. For most servers SSL "
184
+ "is the recommended option."
185
+ msgstr ""
186
+ "Utilisez le chiffrage TLS. Ce n'est pas la même chose que STARTTLS. Pour la "
187
+ "plupart des serveurs l'option SSL est recommandée."
188
+
189
+ #: smtp.php:208
190
+ msgid "Authentication"
191
+ msgstr "Authentification"
192
+
193
+ #: smtp.php:211
194
+ msgid "No: Do not use SMTP authentication."
195
+ msgstr "Non : ne pas utiliser l'authentification SMTP."
196
+
197
+ #: smtp.php:213
198
+ msgid "Yes: Use SMTP authentication."
199
+ msgstr "Oui : utiliser l'authentification SMTP."
200
+
201
+ #: smtp.php:214
202
+ msgid "If this is set to no, the values below are ignored."
203
+ msgstr ""
204
+ "Si cette valeur est définie sur non, les valeurs ci-dessous sont ignorées."
205
+
206
+ #: smtp.php:218 importer.php:830 import-users-from-csv-with-meta.php:52
207
+ #: import-users-from-csv-with-meta.php:195
208
+ msgid "Username"
209
+ msgstr "Nom d’utilisateur"
210
+
211
+ #: smtp.php:222 import-users-from-csv-with-meta.php:195
212
+ msgid "Password"
213
+ msgstr "Mot de passe"
214
+
215
+ #: smtp.php:227
216
+ msgid "Save Changes"
217
+ msgstr "Sauvegarder les changements"
218
+
219
+ #: smtp.php:234
220
+ msgid "Send a Test Email"
221
+ msgstr "Envoyer un courriel de test"
222
+
223
+ #: smtp.php:240
224
+ msgid "To:"
225
+ msgstr "A :"
226
+
227
+ #: smtp.php:242
228
+ msgid ""
229
+ "Type an email address here and then click Send Test to generate a test email."
230
+ msgstr ""
231
+ "Entrez une adresse courriel ici, puis cliquez sur Envoyer un test pour "
232
+ "générer un courriel de test."
233
+
234
+ #: importer.php:60
235
+ msgid "Ready to registers"
236
+ msgstr "Prêt à enregistrer"
237
+
238
+ #: importer.php:61
239
+ msgid "First row represents the form of sheet"
240
+ msgstr "La première rangée représente la forme de la feuille"
241
+
242
+ #: importer.php:88
243
+ msgid "File must contain at least 2 columns: username and email"
244
+ msgstr ""
245
+ "Le fichier doit contenir au moins 2 colonnes : nom d'utilisateur et adresse "
246
+ "courriel"
247
+
248
+ #: importer.php:116
249
+ msgid "Inserting and updating data"
250
+ msgstr "Insertion et mise à jour de données"
251
+
252
+ #: importer.php:118
253
+ msgid "Row"
254
+ msgstr "Rangée"
255
+
256
+ #: importer.php:123
257
+ msgid "Row number"
258
+ msgstr "Numéro de rangée"
259
+
260
+ #: importer.php:123
261
+ msgid "does not have the same columns than the header, we are going to skip"
262
+ msgstr "n’a pas les mêmes colonnes que l'en-tête, nous allons abandonner"
263
+
264
+ #: importer.php:174
265
+ msgid "Problems with ID"
266
+ msgstr "Problèmes avec l’ID"
267
+
268
+ #: importer.php:174
269
+ msgid ""
270
+ "username is not the same in the CSV and in database, we are going to skip."
271
+ msgstr ""
272
+ "nom d'utilisateur n'est pas le même dans le CSV et dans la base de données, "
273
+ "nous allons abandonner."
274
+
275
+ #: importer.php:222
276
+ msgid "User already exists as:"
277
+ msgstr "L'utilisateur existe déjà comme :"
278
+
279
+ #: importer.php:222
280
+ msgid "(in this CSV file is called:"
281
+ msgstr "(dans ce fichier CSV est appelé :"
282
+
283
+ #: importer.php:248
284
+ msgid "Problems with user:"
285
+ msgstr "Problèmes avec l'utilisateur :"
286
+
287
+ #: importer.php:248
288
+ msgid ", we are going to skip. \\r\\nError: "
289
+ msgstr ", nous allons abandonner. \\r\\nErreur : "
290
+
291
+ #: importer.php:368
292
+ msgid "Password has not been changed"
293
+ msgstr "Le mot de passe n'a pas été modifié"
294
+
295
+ #: importer.php:437
296
+ msgid "Process finished you can go"
297
+ msgstr "Processus terminé, vous pouvez aller"
298
+
299
+ #: importer.php:437
300
+ msgid "here to see results"
301
+ msgstr "Ici pour voir les résultats"
302
+
303
+ #: importer.php:452
304
+ msgid "You are not allowed to see this content."
305
+ msgstr "Vous n'êtes pas autorisé à voir ce contenu."
306
+
307
+ #: importer.php:498
308
+ msgid "Click to open/close"
309
+ msgstr "Cliquez pour ouvrir/fermer"
310
+
311
+ #: importer.php:502
312
+ msgid "Old CSV files uploaded"
313
+ msgstr "Anciens fichiers CSV téléchargés"
314
+
315
+ #: importer.php:505
316
+ msgid ""
317
+ "For security reasons you should delete this files, probably they would be "
318
+ "visible in the Internet if a bot or someone discover the URL. You can delete "
319
+ "each file or maybe you want delete all CSV files you have uploaded:"
320
+ msgstr ""
321
+ "Pour des raisons de sécurité, vous devez supprimer ces fichiers, ils "
322
+ "seraient probablement visibles sur Internet si un robot ou quelqu'un "
323
+ "découvre l'URL. Vous pouvez supprimer chaque fichier ou peut-être supprimer "
324
+ "tous les fichiers CSV que vous avez téléchargés :"
325
+
326
+ #: importer.php:506
327
+ msgid "Delete all CSV files uploaded"
328
+ msgstr "Supprimer tous les fichiers CSV téléchargés"
329
+
330
+ #: importer.php:516
331
+ msgid "Delete"
332
+ msgstr "Supprimer"
333
+
334
+ #: importer.php:525
335
+ msgid ""
336
+ "File must contain at least <strong>2 columns: username and email</strong>. "
337
+ "These should be the first two columns and it should be placed <strong>in "
338
+ "this order: username and email</strong>. If there are more columns, this "
339
+ "plugin will manage it automatically."
340
+ msgstr ""
341
+ "Le fichier doit contenir au moins <strong>2 colonnes : nom d'utilisateur et "
342
+ "courriel</strong>. Ceux-ci doivent être les deux premières colonnes et il "
343
+ "doivent être placé <strong>dans cet ordre : nom d'utilisateur et courriel</"
344
+ "strong>. S'il y a plus de colonnes, cette extension va les gérer "
345
+ "automatiquement."
346
+
347
+ #: importer.php:526
348
+ msgid ""
349
+ "Please, read carefully how <strong>passwords are managed</strong> and also "
350
+ "take note about capitalization, this plugin is <strong>case sensitive</"
351
+ "strong>."
352
+ msgstr ""
353
+ "Merci de lire attentivement comment <strong>les mots de passe sont gérés</"
354
+ "strong> et prenez également note des majuscules, cette extension est "
355
+ "<strong>sensible à la casse</strong>."
356
+
357
+ #: importer.php:529 import-users-from-csv-with-meta.php:96
358
+ #: import-users-from-csv-with-meta.php:202
359
+ msgid "Import users from CSV"
360
+ msgstr "Importer des utilisateurs à partir de CSV"
361
+
362
+ #: importer.php:539
363
+ msgid "Update existing users?"
364
+ msgstr "Mettre à jour les utilisateurs existants ?"
365
+
366
+ #: importer.php:542 importer.php:571
367
+ msgid "Yes"
368
+ msgstr "Oui"
369
+
370
+ #: importer.php:543 importer.php:570
371
+ msgid "No"
372
+ msgstr "Non"
373
+
374
+ #: importer.php:549 importer.php:1077
375
+ msgid "Role"
376
+ msgstr "Rôle"
377
+
378
+ #: importer.php:562
379
+ msgid ""
380
+ "If you choose more than one role, the roles would be assigned correctly but "
381
+ "you should use some plugin like <a href=\"https://wordpress.org/plugins/user-"
382
+ "role-editor/\">User Role Editor</a> to manage them."
383
+ msgstr ""
384
+ "Si vous choisissez plus d'un rôle, les rôles seront attribués correctement, "
385
+ "mais vous devriez utiliser une extension comme <a href=\"https://wordpress."
386
+ "org/plugins/user-role-editor/\">User Role Editor</a> pour les gérer."
387
+
388
+ #: importer.php:567
389
+ msgid "Update roles for existing users?"
390
+ msgstr "Mise à jour des rôles pour les utilisateurs existants ?"
391
+
392
+ #: importer.php:577
393
+ msgid "CSV file <span class=\"description\">(required)</span></label>"
394
+ msgstr "Fichier CSV <em>(requis)</em>"
395
+
396
+ #: importer.php:581
397
+ msgid "<em>or you can choose directly a file from your host,"
398
+ msgstr "<em>ou vous pouvez choisir directement un fichier de votre hôte,"
399
+
400
+ #: importer.php:581 importer.php:585
401
+ msgid "click here"
402
+ msgstr "cliquer ici"
403
+
404
+ #: importer.php:584 importer.php:1038 importer.php:1103
405
+ msgid "You have to introduce the path to file, i.e.:"
406
+ msgstr "Vous devez saisir le chemin d'accès au fichier, par exemple :"
407
+
408
+ #: importer.php:585
409
+ msgid "or you can upload it directly from your PC"
410
+ msgstr "ou vous pouvez le télécharger directement depuis votre ordinateur"
411
+
412
+ #: importer.php:591
413
+ msgid "What should the plugin do with empty cells?"
414
+ msgstr "Que doit faire l’extension avec les cellules vides ?"
415
+
416
+ #: importer.php:594
417
+ msgid "Leave the old value for this metadata"
418
+ msgstr "Laisser l'ancienne valeur de ces métadonnées"
419
+
420
+ #: importer.php:595
421
+ msgid "Delete the metadata"
422
+ msgstr "Supprimer les métadonnées"
423
+
424
+ #: importer.php:621
425
+ msgid "BuddyPress users"
426
+ msgstr "Utilisateurs BuddyPress"
427
+
428
+ #: importer.php:622
429
+ msgid ""
430
+ "You can insert any profile from BuddyPress using his name as header. Plugin "
431
+ "will check, before import, which fields are defined in BuddyPress and will "
432
+ "assign it in the update. You can use this fields:"
433
+ msgstr ""
434
+ "Vous pouvez insérer n'importe quel profil de BuddyPress en utilisant son nom "
435
+ "comme en-tête. L’extension vérifiera, avant l'importation, quels champs sont "
436
+ "définis dans BuddyPress et l'affectera dans la mise à jour. Vous pouvez "
437
+ "utiliser les champs suivants :"
438
+
439
+ #: importer.php:626
440
+ msgid ""
441
+ "Remember that all date fields have to be imported using a format like this: "
442
+ "2016-01-01 00:00:00"
443
+ msgstr ""
444
+ "N'oubliez pas que tous les champs de date doivent être importés avec un "
445
+ "format comme celui-ci : 2016-01-01 00:00:00"
446
+
447
+ #: importer.php:628 importer.php:644 importer.php:661 importer.php:677
448
+ msgid "Only for"
449
+ msgstr "Seulement pour"
450
+
451
+ #: importer.php:628 importer.php:644 importer.php:661 importer.php:677
452
+ msgid "users"
453
+ msgstr "utilisateurs"
454
+
455
+ #: importer.php:640
456
+ msgid "Do not activate users"
457
+ msgstr "Ne pas activer les utilisateurs"
458
+
459
+ #: importer.php:641
460
+ msgid "Activate users when they are being imported"
461
+ msgstr "Activer les utilisateurs lors de leur importation"
462
+
463
+ #: importer.php:644
464
+ msgid "WP Members"
465
+ msgstr "Membres WP"
466
+
467
+ #: importer.php:654
468
+ msgid "Approve users at the same time is being created"
469
+ msgstr "Approuver les utilisateurs en même temps que leur création"
470
+
471
+ #: importer.php:657
472
+ msgid "Do not approve users"
473
+ msgstr "Ne pas approuver les utilisateurs"
474
+
475
+ #: importer.php:658
476
+ msgid "Approve users when they are being imported"
477
+ msgstr "Approuver les utilisateurs lors de leur importation"
478
+
479
+ #: importer.php:661
480
+ msgid "New User Approve"
481
+ msgstr "Nouvel utilisateur approuvé"
482
+
483
+ #: importer.php:671
484
+ msgid "Repeated email in different users?"
485
+ msgstr "Courriel répété dans différents utilisateurs ?"
486
+
487
+ #: importer.php:674
488
+ msgid "Not allowed"
489
+ msgstr "Non permis"
490
+
491
+ #: importer.php:675
492
+ msgid "Allowed"
493
+ msgstr "Permis"
494
+
495
+ #: importer.php:677
496
+ msgid "Allow Multiple Accounts"
497
+ msgstr "Autoriser plusieurs comptes"
498
+
499
+ #: importer.php:677
500
+ msgid ""
501
+ "Allow multiple user accounts to be created having the same email address."
502
+ msgstr ""
503
+ "Autoriser la création de plusieurs comptes d'utilisateurs ayant la même "
504
+ "adresse courriel."
505
+
506
+ #: importer.php:686
507
+ msgid "WordPress Access Areas is activated"
508
+ msgstr "Les zones d'accès WordPress sont activées"
509
+
510
+ #: importer.php:688
511
+ msgid "As user of"
512
+ msgstr "En tant qu'utilisateur de"
513
+
514
+ #: importer.php:688
515
+ msgid "WordPress Access Areas"
516
+ msgstr "Zones d'accès WordPress"
517
+
518
+ #: importer.php:688
519
+ msgid "you can use the Access Areas created"
520
+ msgstr "vous pouvez utiliser les zones d'accès créées"
521
+
522
+ #: importer.php:688 importer.php:938
523
+ msgid "here"
524
+ msgstr "par ici"
525
+
526
+ #: importer.php:688
527
+ msgid ""
528
+ "and use this areas in your own CSV file. Please use the column name "
529
+ "<strong>wp-access-areas</strong> and in each row use <strong>the name that "
530
+ "you have used"
531
+ msgstr ""
532
+ "et utilisez ces zones dans votre propre fichier CSV. Veuillez utiliser le "
533
+ "nom de la colonne <strong>wp-access-areas</strong> et utiliser dans chaque "
534
+ "ligne <strong>le nom que vous avez utilisé"
535
+
536
+ #: importer.php:688
537
+ msgid ", like this ones:"
538
+ msgstr ", comme celui-ci :"
539
+
540
+ #: importer.php:697
541
+ msgid ""
542
+ "If you leave this cell empty for some user or the access area indicated "
543
+ "doesn't exist, user won't be assigned to any access area. You can choose "
544
+ "more than one area for each user using pads between them in the same row, i."
545
+ "e.: "
546
+ msgstr ""
547
+ "Si vous laissez cette cellule vide pour un utilisateur ou si la zone d'accès "
548
+ "indiquée n'existe pas, l'utilisateur ne sera affecté à aucune zone d'accès. "
549
+ "Vous pouvez choisir plus d'une zone pour chaque utilisateur en utilisant des "
550
+ "pads entre eux dans la même rangée, par exemple : "
551
+
552
+ #: importer.php:704
553
+ msgid "Send mail"
554
+ msgstr "Envoyer le courriel"
555
+
556
+ #: importer.php:706
557
+ msgid "Do you wish to send a mail with credentials and other data?"
558
+ msgstr ""
559
+ "Voulez-vous envoyer un courriel avec des informations d'identification et "
560
+ "d'autres données ?"
561
+
562
+ #: importer.php:706 importer.php:707
563
+ msgid "yes"
564
+ msgstr "oui"
565
+
566
+ #: importer.php:707
567
+ msgid ""
568
+ "Do you wish to send this mail also to users that are being updated? (not "
569
+ "only to the one which are being created)"
570
+ msgstr ""
571
+ "Voulez-vous envoyer ce courriel également aux utilisateurs qui sont mis à "
572
+ "jour ? (et pas seulement à ceux qui sont créés)"
573
+
574
+ #: importer.php:715
575
+ msgid "Start importing"
576
+ msgstr "Démarrer l’importation"
577
+
578
+ #: importer.php:723
579
+ msgid "Please choose a file"
580
+ msgstr "Veuillez choisir un fichier"
581
+
582
+ #: importer.php:728
583
+ msgid "Please enter a path to the file"
584
+ msgstr "Chemin d'accès au fichier"
585
+
586
+ #: importer.php:733
587
+ msgid "Please select a role"
588
+ msgstr "Veuillez sélectionner un rôle"
589
+
590
+ #: importer.php:740
591
+ msgid "Are you sure to delete this file?"
592
+ msgstr "Voulez-vous vraiment supprimer ce fichier ?"
593
+
594
+ #: importer.php:749
595
+ msgid "There were problems deleting the file, please check file permissions"
596
+ msgstr ""
597
+ "Problèmes pour supprimer le fichier, merci de vérifier les autorisations du "
598
+ "fichier"
599
+
600
+ #: importer.php:751
601
+ msgid "File successfully deleted"
602
+ msgstr "Fichier supprimé avec succès"
603
+
604
+ #: importer.php:759
605
+ msgid ""
606
+ "Are you sure to delete ALL CSV files uploaded? There can be CSV files from "
607
+ "other plugins."
608
+ msgstr ""
609
+ "Voulez-vous vraiment supprimer tous les fichiers CSV téléchargés ? Il peut y "
610
+ "avoir des fichiers CSV à partir d'autres extensions."
611
+
612
+ #: importer.php:767
613
+ msgid "There were problems deleting the files, please check files permissions"
614
+ msgstr "Des problèmes ont été rencontrés lors de la suppression des fichiers."
615
+
616
+ #: importer.php:769
617
+ msgid "Files successfully deleted"
618
+ msgstr "Fichiers supprimés avec succès"
619
+
620
+ #: importer.php:794
621
+ msgid "Custom columns loaded"
622
+ msgstr "Colonnes personnalisées"
623
+
624
+ #: importer.php:798
625
+ msgid "Columns loaded in previous files"
626
+ msgstr "Colonnes chargées dans des fichiers précédents"
627
+
628
+ #: importer.php:799
629
+ msgid ""
630
+ "(if you load another CSV with different columns, the new ones will replace "
631
+ "this list)"
632
+ msgstr ""
633
+ "(Si vous chargez un autre CSV avec des colonnes différentes, les nouvelles "
634
+ "remplacent cette liste)"
635
+
636
+ #: importer.php:808
637
+ msgid "There is no columns loaded yet"
638
+ msgstr "Il n'y a pas de colonnes chargées"
639
+
640
+ #: importer.php:823 import-users-from-csv-with-meta.php:202
641
+ msgid "Documentation"
642
+ msgstr "Documentation"
643
+
644
+ #: importer.php:827
645
+ msgid "Columns position"
646
+ msgstr "Position des colonnes"
647
+
648
+ #: importer.php:828
649
+ msgid ""
650
+ "(Documents should look like the one presented into screenshot. Remember you "
651
+ "should fill the first two columns with the next values)"
652
+ msgstr ""
653
+ "(Les documents doivent ressembler à ceux présentés dans la capture d'écran. "
654
+ "N'oubliez pas que vous devriez remplir les deux premières colonnes avec les "
655
+ "valeurs suivantes)"
656
+
657
+ #: importer.php:831
658
+ msgid "Email"
659
+ msgstr "Courriel"
660
+
661
+ #: importer.php:833
662
+ msgid ""
663
+ "(The next columns are totally customizable and you can use whatever you "
664
+ "want. All rows must contains same columns)"
665
+ msgstr ""
666
+ "(Les colonnes suivantes sont totalement personnalisables et vous pouvez "
667
+ "utiliser ce que vous voulez. Toutes les lignes doivent contenir les mêmes "
668
+ "colonnes)"
669
+
670
+ #: importer.php:834
671
+ msgid "(User profile will be adapted to the kind of data you have selected)"
672
+ msgstr ""
673
+ "(Le profil utilisateur sera adapté au type de données que vous avez "
674
+ "sélectionné)"
675
+
676
+ #: importer.php:835
677
+ msgid ""
678
+ "(If you want to disable the extra profile information, please deactivate "
679
+ "this plugin after make the import)"
680
+ msgstr ""
681
+ "(Si vous souhaitez désactiver les informations de profil supplémentaires, "
682
+ "veuillez désactiver cette extension après avoir fait l'importation)"
683
+
684
+ #: importer.php:839
685
+ msgid "id"
686
+ msgstr "ID"
687
+
688
+ #: importer.php:840
689
+ msgid ""
690
+ "You can use a column called id in order to make inserts or updates of an "
691
+ "user using the ID used by WordPress in the wp_users table. We have two "
692
+ "different cases:"
693
+ msgstr ""
694
+ "Vous pouvez utiliser une colonne appelée ID pour faire des insertions ou des "
695
+ "mises à jour d'un utilisateur utilisant l'ID utilisé par WordPress dans la "
696
+ "table wp_users. Nous avons deux cas différents :"
697
+
698
+ #: importer.php:842
699
+ msgid ""
700
+ "If id <strong>doesn't exist in your users table</strong>: user will be "
701
+ "inserted"
702
+ msgstr ""
703
+ "Si l’ID <strong>n'existe pas dans la table des utilisateurs</strong> : "
704
+ "l'utilisateur sera inséré"
705
+
706
+ #: importer.php:843
707
+ msgid ""
708
+ "If id <strong>exists</strong>: plugin check if username is the same, if yes, "
709
+ "it will update the data, if not, it ignores the cell to avoid problems"
710
+ msgstr ""
711
+ "Si l’ID <strong>existe</strong> : l’extension va vérifier si le nom "
712
+ "d’utilisateur est le même, si oui, il va mettre à jour les données, si non, "
713
+ "il ignore la cellule pour éviter les problèmes"
714
+
715
+ #: importer.php:848
716
+ msgid "Passwords"
717
+ msgstr "Mots de passe"
718
+
719
+ #: importer.php:849
720
+ msgid ""
721
+ "A string that contains user passwords. We have different options for this "
722
+ "case:"
723
+ msgstr ""
724
+ "Chaîne contenant des mots de passe utilisateur. Nous avons différentes "
725
+ "options pour ce cas :"
726
+
727
+ #: importer.php:851
728
+ msgid ""
729
+ "If you <strong>don't create a column for passwords</strong>: passwords will "
730
+ "be generated automatically"
731
+ msgstr ""
732
+ "Si vous <strong>ne créez pas de colonne pour les mots de passe</strong> : "
733
+ "les mots de passe seront générés automatiquement"
734
+
735
+ #: importer.php:852
736
+ msgid ""
737
+ "If you <strong>create a column for passwords</strong>: if cell is empty, "
738
+ "password won't be updated; if cell has a value, it will be used"
739
+ msgstr ""
740
+ "Si vous <strong>créez une colonne pour les mots de passe</strong> : si la "
741
+ "cellule est vide, le mot de passe ne sera pas mis à jour ; Si la cellule a "
742
+ "une valeur, elle sera utilisée"
743
+
744
+ #: importer.php:857
745
+ msgid "WordPress default profile data"
746
+ msgstr "Données de profil par défaut de WordPress"
747
+
748
+ #: importer.php:858
749
+ msgid ""
750
+ "You can use those labels if you want to set data adapted to the WordPress "
751
+ "default user columns (the ones who use the function"
752
+ msgstr ""
753
+ "Vous pouvez utiliser ces étiquettes si vous souhaitez définir des données "
754
+ "adaptées aux colonnes utilisateur par défaut de WordPress (celles qui "
755
+ "utilisent la fonction"
756
+
757
+ #: importer.php:860
758
+ msgid ""
759
+ "A string that contains a URL-friendly name for the user. The default is the "
760
+ "user's username."
761
+ msgstr ""
762
+ "Chaîne contenant un nom familier pour l'utilisateur. La valeur par défaut "
763
+ "est le nom d'utilisateur de l'utilisateur."
764
+
765
+ #: importer.php:861
766
+ msgid "A string containing the user's URL for the user's web site."
767
+ msgstr ""
768
+ "Chaîne contenant l'URL de l'utilisateur pour le site web de l'utilisateur."
769
+
770
+ #: importer.php:862
771
+ msgid ""
772
+ "A string that will be shown on the site. Defaults to user's username. It is "
773
+ "likely that you will want to change this, for both appearance and security "
774
+ "through obscurity (that is if you don't use and delete the default admin "
775
+ "user)."
776
+ msgstr ""
777
+ "La chaîne qui sera affichée sur le site. Par défaut, le nom d'utilisateur de "
778
+ "l'utilisateur. Il est probable que vous voudrez changer cela, à la fois pour "
779
+ "l'aspect et la sécurité par masquage (c'est-à-dire si vous n'utilisez pas et "
780
+ "ne supprimez pas l'utilisateur admin par défaut)."
781
+
782
+ #: importer.php:863
783
+ msgid "The user's nickname, defaults to the user's username."
784
+ msgstr ""
785
+ "Le pseudonyme de l'utilisateur, par défaut, est le nom d'utilisateur de "
786
+ "l'utilisateur."
787
+
788
+ #: importer.php:864
789
+ msgid "The user's first name."
790
+ msgstr "Prénom de l'utilisateur."
791
+
792
+ #: importer.php:865
793
+ msgid "The user's last name."
794
+ msgstr "Nom de l'utilisateur."
795
+
796
+ #: importer.php:866
797
+ msgid "A string containing content about the user."
798
+ msgstr "Chaîne contenant du contenu sur l'utilisateur."
799
+
800
+ #: importer.php:867
801
+ msgid "User's Jabber account."
802
+ msgstr "Compte Jabber de l'utilisateur."
803
+
804
+ #: importer.php:868
805
+ msgid "User's AOL IM account."
806
+ msgstr "Compte AOL IM de l'utilisateur."
807
+
808
+ #: importer.php:869
809
+ msgid "User's Yahoo IM account."
810
+ msgstr "Compte Yahoo IM de l'utilisateur."
811
+
812
+ #: importer.php:870
813
+ msgid "Using the WordPress format for this kind of data Y-m-d H:i:s."
814
+ msgstr "Utilisation du format WordPress pour ce type de données Y-m-d H:i:s."
815
+
816
+ #: importer.php:877
817
+ msgid "WooCommerce is activated"
818
+ msgstr "WooCommerce est activé"
819
+
820
+ #: importer.php:878
821
+ msgid ""
822
+ "You can use those labels if you want to set data adapted to the WooCommerce "
823
+ "default user columns"
824
+ msgstr ""
825
+ "Vous pouvez utiliser ces étiquettes si vous souhaitez définir des données "
826
+ "adaptées aux colonnes utilisateur WooCommerce par défaut"
827
+
828
+ #: importer.php:906
829
+ msgid "Important notice"
830
+ msgstr "Avis important"
831
+
832
+ #: importer.php:907
833
+ msgid ""
834
+ "You can upload as many files as you want, but all must have the same "
835
+ "columns. If you upload another file, the columns will change to the form of "
836
+ "last file uploaded."
837
+ msgstr ""
838
+ "Vous pouvez télécharger autant de fichiers que vous voulez, mais tous "
839
+ "doivent avoir les mêmes colonnes. Si vous téléchargez un autre fichier, les "
840
+ "colonnes changent dans la forme du dernier fichier téléchargé."
841
+
842
+ #: importer.php:910
843
+ msgid "Any question about it"
844
+ msgstr "Toute question à ce sujet"
845
+
846
+ #: importer.php:913
847
+ msgid "Free support (in WordPress forums):"
848
+ msgstr "Support gratuit (dans les forums WordPress) :"
849
+
850
+ #: importer.php:914
851
+ msgid "Premium support (with a quote):"
852
+ msgstr "Assistance Premium (avec un devis) :"
853
+
854
+ #: importer.php:919
855
+ msgid "Example"
856
+ msgstr "Exemple"
857
+
858
+ #: importer.php:920
859
+ msgid "Download this"
860
+ msgstr "Télécharger"
861
+
862
+ #: importer.php:920
863
+ msgid "file"
864
+ msgstr "fichier"
865
+
866
+ #: importer.php:920
867
+ msgid "to test"
868
+ msgstr "pour tester"
869
+
870
+ #: importer.php:936 import-users-from-csv-with-meta.php:202
871
+ msgid "Mail options"
872
+ msgstr "Options de courriel"
873
+
874
+ #: importer.php:938
875
+ msgid "You can set your own SMTP and other mail details"
876
+ msgstr ""
877
+ "Vous pouvez définir <strong>votre propre SMTP</strong> et d'autres détails "
878
+ "de courriel"
879
+
880
+ #: importer.php:943
881
+ msgid "WordPress automatic emails users updated"
882
+ msgstr "Courriels automatiques pour les mises à jour d’utilisateurs"
883
+
884
+ #: importer.php:947
885
+ msgid "Send automattic WordPress emails?"
886
+ msgstr "Envoyer des courriels automatiques WordPress ?"
887
+
888
+ #: importer.php:951
889
+ msgid ""
890
+ "Deactivate WordPress automattic email when an user is updated or his "
891
+ "password is changed"
892
+ msgstr ""
893
+ "Désactiver le courriel automatique lorsqu'un utilisateur est mis à jour ou "
894
+ "que son mot de passe est modifié"
895
+
896
+ #: importer.php:952
897
+ msgid ""
898
+ "Activate WordPress automattic email when an user is updated or his password "
899
+ "is changed"
900
+ msgstr ""
901
+ "Activer le courriel automatique quand un utilisateur est mis à jour ou son "
902
+ "mot de passe est changé"
903
+
904
+ #: importer.php:954
905
+ msgid ""
906
+ "When you update an user or change his password, WordPress prepare and send "
907
+ "automattic email, you can deactivate it here."
908
+ msgstr ""
909
+ "Lorsque vous mettez à jour un utilisateur ou modifiez son mot de passe, "
910
+ "WordPress prépare et envoie un courrier électronique automatique, vous "
911
+ "pouvez le désactiver ici."
912
+
913
+ #: importer.php:962
914
+ msgid "Customize the email that can be sent when importing users"
915
+ msgstr ""
916
+ "Personnaliser le courriel qui peut être envoyé lors de l'importation "
917
+ "d'utilisateurs"
918
+
919
+ #: importer.php:964
920
+ msgid "Mail subject :"
921
+ msgstr "Sujet du courriel :"
922
+
923
+ #: importer.php:972
924
+ msgid "username to login"
925
+ msgstr "nom d'utilisateur pour ce connecter"
926
+
927
+ #: importer.php:973
928
+ msgid "user password"
929
+ msgstr "mot de passe utilisateur"
930
+
931
+ #: importer.php:974
932
+ msgid "current site login url"
933
+ msgstr "URL actuelle de connexion au site"
934
+
935
+ #: importer.php:975
936
+ msgid "lost password url"
937
+ msgstr "URL de mot de passe perdu"
938
+
939
+ #: importer.php:976
940
+ msgid "password reset url"
941
+ msgstr "URL de réinitialisation du mot de passe"
942
+
943
+ #: importer.php:977
944
+ msgid "user email"
945
+ msgstr "courriel utilisateur"
946
+
947
+ #: importer.php:978
948
+ msgid ""
949
+ "You can also use any WordPress user standard field or an own metadata, if "
950
+ "you have used it in your CSV. For example, if you have a first_name column, "
951
+ "you could use **first_name** or any other meta_data like **my_custom_meta**"
952
+ msgstr ""
953
+ "Vous pouvez également utiliser n'importe quel champ standard d'utilisateur "
954
+ "WordPress ou une méta-donnée, si vous l'avez utilisé dans votre CSV. Par "
955
+ "exemple, si vous avez une colonne first_name, vous pouvez utiliser ** "
956
+ "first_name ** ou tout autre meta_data comme ** my_custom_meta **"
957
+
958
+ #: importer.php:1029
959
+ msgid "Execute an import of users periodically"
960
+ msgstr "Exécuter une importation d'utilisateurs périodiquement"
961
+
962
+ #: importer.php:1035
963
+ msgid "Path of file that are going to be imported"
964
+ msgstr "Chemin du fichier qui va être importé"
965
+
966
+ #: importer.php:1037 importer.php:1102
967
+ msgid "Insert complete path to the file"
968
+ msgstr "Insérer le chemin d'accès complet au fichier"
969
+
970
+ #: importer.php:1042
971
+ msgid "Period"
972
+ msgstr "Période"
973
+
974
+ #: importer.php:1045
975
+ msgid "Hourly"
976
+ msgstr "Toutes les heures"
977
+
978
+ #: importer.php:1046
979
+ msgid "Twicedaily"
980
+ msgstr "Deux fois par jour"
981
+
982
+ #: importer.php:1047
983
+ msgid "Daily"
984
+ msgstr "Quotidien"
985
+
986
+ #: importer.php:1049
987
+ msgid "How often the event should reoccur?"
988
+ msgstr "À quelle fréquence l’importation doit se produire ?"
989
+
990
+ #: importer.php:1053
991
+ msgid "Activate periodical import?"
992
+ msgstr "Activer l'importation périodique ?"
993
+
994
+ #: importer.php:1059
995
+ msgid "Send mail when using periodical import?"
996
+ msgstr "Envoyer un courriel lors de l'importation périodique ?"
997
+
998
+ #: importer.php:1065
999
+ msgid "Send mail also to users that are being updated?"
1000
+ msgstr "Envoyer également aux utilisateurs qui sont mis à jour ?"
1001
+
1002
+ #: importer.php:1071
1003
+ msgid "Delete users that are not present in the CSV?"
1004
+ msgstr "Supprimer les utilisateurs qui ne sont pas présents dans le CSV ?"
1005
+
1006
+ #: importer.php:1091
1007
+ msgid "Which role would be used to import users?"
1008
+ msgstr "Quel rôle serait utilisé pour importer des utilisateurs ?"
1009
+
1010
+ #: importer.php:1095
1011
+ msgid "Move file after import?"
1012
+ msgstr "Déplacer le fichier après l'importation ?"
1013
+
1014
+ #: importer.php:1108
1015
+ msgid "Last actions of schedule task"
1016
+ msgstr "Dernières actions de la tâche programmée"
1017
+
1018
+ #: importer.php:1114
1019
+ msgid "Mail sending"
1020
+ msgstr "Envoi automatisé"
1021
+
1022
+ #: importer.php:1115
1023
+ msgid ""
1024
+ "Please take care: for this option, cron import, mail sending is not "
1025
+ "available in this version (if you need it"
1026
+ msgstr ""
1027
+ "Veuillez prendre note : pour l’option d’importation automatique, l'envoi de "
1028
+ "courrier n'est pas disponible dans cette version (si vous en avez besoin"
1029
+
1030
+ #: importer.php:1115
1031
+ msgid "talk with us"
1032
+ msgstr "parlez avec nous"
1033
+
1034
+ #: importer.php:1119
1035
+ msgid "Save schedule options"
1036
+ msgstr "Enregistrer les options de planification"
1037
+
1038
+ #: importer.php:1126
1039
+ msgid ""
1040
+ "Are you sure to delete all users that are not present in the CSV? This "
1041
+ "action cannot be undone."
1042
+ msgstr ""
1043
+ "Êtes-vous sûr de supprimer tous les utilisateurs qui ne sont pas présents "
1044
+ "dans le CSV ? Cette action ne peut pas être annulée."
1045
+
1046
+ #: importer.php:1149
1047
+ msgid "Do you like it?"
1048
+ msgstr "Vous aimez cette extension ?"
1049
+
1050
+ #: importer.php:1152
1051
+ msgid "buy me a coffee"
1052
+ msgstr "payez moi un café"
1053
+
1054
+ #: importer.php:1153 importer.php:1173
1055
+ msgid "Hi! we are"
1056
+ msgstr "Bonjour ! Nous sommes"
1057
+
1058
+ #: importer.php:1153 importer.php:1173
1059
+ msgid "and"
1060
+ msgstr "et"
1061
+
1062
+ #: importer.php:1153 importer.php:1173
1063
+ msgid "from"
1064
+ msgstr "de"
1065
+
1066
+ #: importer.php:1153 importer.php:1173
1067
+ msgid "developers of this plugin."
1068
+ msgstr "développeurs de cette extension."
1069
+
1070
+ #: importer.php:1154
1071
+ msgid ""
1072
+ "We have been spending many hours to develop this plugin. <br>If you like and "
1073
+ "use this plugin, you can <strong>buy us a cup of coffee</strong>."
1074
+ msgstr ""
1075
+ "Nous avons passé plusieurs heures à développer cette extension. <br>Si vous "
1076
+ "aimez et utilisez cette extension, vous pourriez au moins <strong>nous payer "
1077
+ "un café</strong>."
1078
+
1079
+ #: importer.php:1158
1080
+ msgid "PayPal – The safer, easier way to pay online."
1081
+ msgstr "PayPal - La manière la plus sûre et la plus simple de payer en ligne."
1082
+
1083
+ #: importer.php:1170
1084
+ msgid "Need help with WordPress or WooCommerce?"
1085
+ msgstr "Besoin d'aide avec WordPress ou WooCommerce ?"
1086
+
1087
+ #: importer.php:1174
1088
+ msgid ""
1089
+ "We work everyday with WordPress and WooCommerce, if you need help hire us, "
1090
+ "send us a message to"
1091
+ msgstr ""
1092
+ "Nous travaillons tous les jours avec WordPress et WooCommerce, si vous avez "
1093
+ "besoin d'aide, envoyez-nous un message à"
1094
+
1095
+ #: import-users-from-csv-with-meta.php:51
1096
+ #: import-users-from-csv-with-meta.php:198
1097
+ msgid "Welcome to"
1098
+ msgstr "Bienvenue à"
1099
+
1100
+ #: import-users-from-csv-with-meta.php:52
1101
+ #: import-users-from-csv-with-meta.php:195
1102
+ msgid "Welcome,"
1103
+ msgstr "Bienvenue,"
1104
+
1105
+ #: import-users-from-csv-with-meta.php:52
1106
+ #: import-users-from-csv-with-meta.php:195
1107
+ msgid "Your data to login in this site is:"
1108
+ msgstr "Vos données pour vous connecter sur ce site sont les suivantes :"
1109
+
1110
+ #: import-users-from-csv-with-meta.php:52
1111
+ #: import-users-from-csv-with-meta.php:195
1112
+ msgid "URL to login"
1113
+ msgstr "URL de connexion"
1114
+
1115
+ #: import-users-from-csv-with-meta.php:96
1116
+ msgid "Insert users massively (CSV)"
1117
+ msgstr "Insérer des utilisateurs massivement (CSV)"
1118
+
1119
+ #: import-users-from-csv-with-meta.php:97
1120
+ msgid "SMTP Configuration"
1121
+ msgstr "Configuration SMTP"
1122
+
1123
+ #: import-users-from-csv-with-meta.php:103
1124
+ #: import-users-from-csv-with-meta.php:202
1125
+ msgid "Donate"
1126
+ msgstr "Faites un don"
1127
+
1128
+ #: import-users-from-csv-with-meta.php:104
1129
+ msgid "Premium support"
1130
+ msgstr "Assistance Premium"
1131
+
1132
+ #: import-users-from-csv-with-meta.php:105
1133
+ msgid "Premium plugins"
1134
+ msgstr "Extensions Premium"
1135
+
1136
+ #: import-users-from-csv-with-meta.php:202
1137
+ msgid "Customs columns loaded"
1138
+ msgstr "Colonnes personnalisées"
1139
+
1140
+ #: import-users-from-csv-with-meta.php:202
1141
+ msgid "Cron import"
1142
+ msgstr "Automatisation"
1143
+
1144
+ #: import-users-from-csv-with-meta.php:202
1145
+ msgid "Shop"
1146
+ msgstr "Boutique"
1147
+
1148
+ #: import-users-from-csv-with-meta.php:202
1149
+ msgid "Hire an expert"
1150
+ msgstr "Embaucher un expert"
1151
+
1152
+ #: import-users-from-csv-with-meta.php:242
1153
+ msgid "Error, we cannot find the file"
1154
+ msgstr "Erreur, impossible de trouver le fichier"
1155
+
1156
+ #: import-users-from-csv-with-meta.php:286
1157
+ msgid "Unable to write to directory. Is this directory writable by the server?"
1158
+ msgstr ""
1159
+ "Impossible d'écrire dans le répertoire. Ce répertoire est-il accessible en "
1160
+ "écriture par le serveur ?"
1161
+
1162
+ #: import-users-from-csv-with-meta.php:294
1163
+ msgid "Error, the file"
1164
+ msgstr "Erreur, le fichier"
1165
+
1166
+ #: import-users-from-csv-with-meta.php:294
1167
+ msgid "could not moved to"
1168
+ msgstr "ne peut pas être déplacé à"
1169
+
1170
+ #: import-users-from-csv-with-meta.php:323
1171
+ msgid "Mail template updated correctly"
1172
+ msgstr "Modèle de courriel mis à jour correctement"
1173
+
1174
+ #: import-users-from-csv-with-meta.php:370
1175
+ msgid "Settings updated correctly"
1176
+ msgstr "Paramètres mis à jour correctement"
1177
+
1178
+ #: import-users-from-csv-with-meta.php:376
1179
+ msgid "Import cron task starts at"
1180
+ msgstr "La tâche cron d’importation commence à"
1181
+
1182
+ #: import-users-from-csv-with-meta.php:397
1183
+ msgid "--Finished at"
1184
+ msgstr "-- Finis à"
1185
+
1186
+ #: import-users-from-csv-with-meta.php:506
1187
+ msgid "You are not an adminstrator"
1188
+ msgstr "Vous n'êtes pas un administrateur"
trunk/languages/import-users-from-csv-with-meta.pot ADDED
@@ -0,0 +1,1067 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # WordPress Blank Pot
2
+ # Copyright (C) 2014 ...
3
+ # This file is distributed under the GNU General Public License v2 or later.
4
+ #, fuzzy
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: WordPress Blank Pot v1.0.0\n"
8
+ "Report-Msgid-Bugs-To: Translator Name <translations@example.com>\n"
9
+ "POT-Creation-Date: 2017-01-24 19:47+0100\n"
10
+ "PO-Revision-Date: \n"
11
+ "Last-Translator: Toni Ginard <toni.ginard@gmail.com>\n"
12
+ "Language-Team: Your Team <translations@example.com>\n"
13
+ "Language: en_US\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
+ "X-Textdomain-Support: yesX-Generator: Poedit 1.6.4\n"
19
+ "X-Poedit-SourceCharset: UTF-8\n"
20
+ "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;"
21
+ "esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
22
+ "_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2\n"
23
+ "X-Poedit-Basepath: ..\n"
24
+ "X-Generator: Poedit 1.8.9\n"
25
+ "X-Poedit-SearchPath-0: .\n"
26
+
27
+ #: import-users-from-csv-with-meta.php:51
28
+ #: import-users-from-csv-with-meta.php:204
29
+ msgid "Welcome to"
30
+ msgstr ""
31
+
32
+ #: import-users-from-csv-with-meta.php:52
33
+ #: import-users-from-csv-with-meta.php:201
34
+ msgid "Welcome,"
35
+ msgstr ""
36
+
37
+ #: import-users-from-csv-with-meta.php:52
38
+ #: import-users-from-csv-with-meta.php:201
39
+ msgid "Your data to login in this site is:"
40
+ msgstr ""
41
+
42
+ #: import-users-from-csv-with-meta.php:52
43
+ #: import-users-from-csv-with-meta.php:201
44
+ msgid "URL to login"
45
+ msgstr ""
46
+
47
+ #: import-users-from-csv-with-meta.php:52
48
+ #: import-users-from-csv-with-meta.php:201 importer.php:834 smtp.php:218
49
+ msgid "Username"
50
+ msgstr ""
51
+
52
+ #: import-users-from-csv-with-meta.php:102
53
+ msgid "Insert users massively (CSV)"
54
+ msgstr ""
55
+
56
+ #: import-users-from-csv-with-meta.php:102
57
+ #: import-users-from-csv-with-meta.php:208 importer.php:533
58
+ msgid "Import users from CSV"
59
+ msgstr ""
60
+
61
+ #: import-users-from-csv-with-meta.php:103
62
+ msgid "SMTP Configuration"
63
+ msgstr ""
64
+
65
+ #: import-users-from-csv-with-meta.php:109
66
+ #: import-users-from-csv-with-meta.php:208
67
+ msgid "Donate"
68
+ msgstr ""
69
+
70
+ #: import-users-from-csv-with-meta.php:110
71
+ msgid "Premium support"
72
+ msgstr ""
73
+
74
+ #: import-users-from-csv-with-meta.php:111
75
+ msgid "Premium plugins"
76
+ msgstr ""
77
+
78
+ #: import-users-from-csv-with-meta.php:201 smtp.php:222
79
+ msgid "Password"
80
+ msgstr ""
81
+
82
+ #: import-users-from-csv-with-meta.php:208
83
+ msgid "Customs columns loaded"
84
+ msgstr ""
85
+
86
+ #: import-users-from-csv-with-meta.php:208 importer.php:940
87
+ msgid "Mail options"
88
+ msgstr ""
89
+
90
+ #: import-users-from-csv-with-meta.php:208 importer.php:827
91
+ msgid "Documentation"
92
+ msgstr ""
93
+
94
+ #: import-users-from-csv-with-meta.php:208
95
+ msgid "Cron import"
96
+ msgstr ""
97
+
98
+ #: import-users-from-csv-with-meta.php:208
99
+ msgid "Shop"
100
+ msgstr ""
101
+
102
+ #: import-users-from-csv-with-meta.php:208
103
+ msgid "Hire an expert"
104
+ msgstr ""
105
+
106
+ #: import-users-from-csv-with-meta.php:248
107
+ msgid "Error, we cannot find the file"
108
+ msgstr ""
109
+
110
+ #: import-users-from-csv-with-meta.php:292
111
+ msgid "Unable to write to directory. Is this directory writable by the server?"
112
+ msgstr ""
113
+
114
+ #: import-users-from-csv-with-meta.php:300
115
+ msgid "Error, the file"
116
+ msgstr ""
117
+
118
+ #: import-users-from-csv-with-meta.php:300
119
+ msgid "could not moved to"
120
+ msgstr ""
121
+
122
+ #: import-users-from-csv-with-meta.php:329
123
+ msgid "Mail template updated correctly"
124
+ msgstr ""
125
+
126
+ #: import-users-from-csv-with-meta.php:382
127
+ msgid "Settings updated correctly"
128
+ msgstr ""
129
+
130
+ #: import-users-from-csv-with-meta.php:388
131
+ msgid "Import cron task starts at"
132
+ msgstr ""
133
+
134
+ #: import-users-from-csv-with-meta.php:409
135
+ msgid "--Finished at"
136
+ msgstr ""
137
+
138
+ #: import-users-from-csv-with-meta.php:535
139
+ msgid "You are not an adminstrator"
140
+ msgstr ""
141
+
142
+ #: importer.php:60
143
+ msgid "Ready to registers"
144
+ msgstr ""
145
+
146
+ #: importer.php:61
147
+ msgid "First row represents the form of sheet"
148
+ msgstr ""
149
+
150
+ #: importer.php:88
151
+ msgid "File must contain at least 2 columns: username and email"
152
+ msgstr ""
153
+
154
+ #: importer.php:116
155
+ msgid "Inserting and updating data"
156
+ msgstr ""
157
+
158
+ #: importer.php:118
159
+ msgid "Row"
160
+ msgstr ""
161
+
162
+ #: importer.php:123
163
+ msgid "Row number"
164
+ msgstr ""
165
+
166
+ #: importer.php:123
167
+ msgid "does not have the same columns than the header, we are going to skip"
168
+ msgstr ""
169
+
170
+ #: importer.php:176
171
+ msgid "Problems with ID"
172
+ msgstr ""
173
+
174
+ #: importer.php:176
175
+ msgid ""
176
+ "username is not the same in the CSV and in database, we are going to skip."
177
+ msgstr ""
178
+
179
+ #: importer.php:223
180
+ msgid "User already exists as:"
181
+ msgstr ""
182
+
183
+ #: importer.php:223
184
+ msgid "(in this CSV file is called:"
185
+ msgstr ""
186
+
187
+ #: importer.php:242
188
+ msgid "Problems with user:"
189
+ msgstr ""
190
+
191
+ #: importer.php:242
192
+ msgid ", we are going to skip. \\r\\nError: "
193
+ msgstr ""
194
+
195
+ #: importer.php:366
196
+ msgid "Password has not been changed"
197
+ msgstr ""
198
+
199
+ #: importer.php:441
200
+ msgid "Process finished you can go"
201
+ msgstr ""
202
+
203
+ #: importer.php:441
204
+ msgid "here to see results"
205
+ msgstr ""
206
+
207
+ #: importer.php:456
208
+ msgid "You are not allowed to see this content."
209
+ msgstr ""
210
+
211
+ #: importer.php:502
212
+ msgid "Click to open/close"
213
+ msgstr ""
214
+
215
+ #: importer.php:506
216
+ msgid "Old CSV files uploaded"
217
+ msgstr ""
218
+
219
+ #: importer.php:509
220
+ msgid ""
221
+ "For security reasons you should delete this files, probably they would be "
222
+ "visible in the Internet if a bot or someone discover the URL. You can delete "
223
+ "each file or maybe you want delete all CSV files you have uploaded:"
224
+ msgstr ""
225
+
226
+ #: importer.php:510
227
+ msgid "Delete all CSV files uploaded"
228
+ msgstr ""
229
+
230
+ #: importer.php:520
231
+ msgid "Delete"
232
+ msgstr ""
233
+
234
+ #: importer.php:529
235
+ msgid ""
236
+ "File must contain at least <strong>2 columns: username and email</strong>. "
237
+ "These should be the first two columns and it should be placed <strong>in "
238
+ "this order: username and email</strong>. If there are more columns, this "
239
+ "plugin will manage it automatically."
240
+ msgstr ""
241
+
242
+ #: importer.php:530
243
+ msgid ""
244
+ "Please, read carefully how <strong>passwords are managed</strong> and also "
245
+ "take note about capitalization, this plugin is <strong>case sensitive</"
246
+ "strong>."
247
+ msgstr ""
248
+
249
+ #: importer.php:543
250
+ msgid "Update existing users?"
251
+ msgstr ""
252
+
253
+ #: importer.php:546 importer.php:575
254
+ msgid "Yes"
255
+ msgstr ""
256
+
257
+ #: importer.php:547 importer.php:574
258
+ msgid "No"
259
+ msgstr ""
260
+
261
+ #: importer.php:553 importer.php:1108
262
+ msgid "Role"
263
+ msgstr ""
264
+
265
+ #: importer.php:566
266
+ msgid ""
267
+ "If you choose more than one role, the roles would be assigned correctly but "
268
+ "you should use some plugin like <a href=\"https://wordpress.org/plugins/user-"
269
+ "role-editor/\">User Role Editor</a> to manage them."
270
+ msgstr ""
271
+
272
+ #: importer.php:571
273
+ msgid "Update roles for existing users?"
274
+ msgstr ""
275
+
276
+ #: importer.php:581
277
+ msgid "CSV file <span class=\"description\">(required)</span></label>"
278
+ msgstr ""
279
+
280
+ #: importer.php:585
281
+ msgid "<em>or you can choose directly a file from your host,"
282
+ msgstr ""
283
+
284
+ #: importer.php:585 importer.php:589
285
+ msgid "click here"
286
+ msgstr ""
287
+
288
+ #: importer.php:588 importer.php:1047 importer.php:1138
289
+ msgid "You have to introduce the path to file, i.e.:"
290
+ msgstr ""
291
+
292
+ #: importer.php:589
293
+ msgid "or you can upload it directly from your PC"
294
+ msgstr ""
295
+
296
+ #: importer.php:595
297
+ msgid "What should the plugin do with empty cells?"
298
+ msgstr ""
299
+
300
+ #: importer.php:598
301
+ msgid "Leave the old value for this metadata"
302
+ msgstr ""
303
+
304
+ #: importer.php:599
305
+ msgid "Delete the metadata"
306
+ msgstr ""
307
+
308
+ #: importer.php:625
309
+ msgid "BuddyPress users"
310
+ msgstr ""
311
+
312
+ #: importer.php:626
313
+ msgid ""
314
+ "You can insert any profile from BuddyPress using his name as header. Plugin "
315
+ "will check, before import, which fields are defined in BuddyPress and will "
316
+ "assign it in the update. You can use this fields:"
317
+ msgstr ""
318
+
319
+ #: importer.php:630
320
+ msgid ""
321
+ "Remember that all date fields have to be imported using a format like this: "
322
+ "2016-01-01 00:00:00"
323
+ msgstr ""
324
+
325
+ #: importer.php:632 importer.php:648 importer.php:665 importer.php:681
326
+ msgid "Only for"
327
+ msgstr ""
328
+
329
+ #: importer.php:632 importer.php:648 importer.php:665 importer.php:681
330
+ msgid "users"
331
+ msgstr ""
332
+
333
+ #: importer.php:644
334
+ msgid "Do not activate users"
335
+ msgstr ""
336
+
337
+ #: importer.php:645
338
+ msgid "Activate users when they are being imported"
339
+ msgstr ""
340
+
341
+ #: importer.php:648
342
+ msgid "WP Members"
343
+ msgstr ""
344
+
345
+ #: importer.php:658
346
+ msgid "Approve users at the same time is being created"
347
+ msgstr ""
348
+
349
+ #: importer.php:661
350
+ msgid "Do not approve users"
351
+ msgstr ""
352
+
353
+ #: importer.php:662
354
+ msgid "Approve users when they are being imported"
355
+ msgstr ""
356
+
357
+ #: importer.php:665
358
+ msgid "New User Approve"
359
+ msgstr ""
360
+
361
+ #: importer.php:675
362
+ msgid "Repeated email in different users?"
363
+ msgstr ""
364
+
365
+ #: importer.php:678
366
+ msgid "Not allowed"
367
+ msgstr ""
368
+
369
+ #: importer.php:679
370
+ msgid "Allowed"
371
+ msgstr ""
372
+
373
+ #: importer.php:681
374
+ msgid "Allow Multiple Accounts"
375
+ msgstr ""
376
+
377
+ #: importer.php:681
378
+ msgid ""
379
+ "Allow multiple user accounts to be created having the same email address."
380
+ msgstr ""
381
+
382
+ #: importer.php:690
383
+ msgid "WordPress Access Areas is activated"
384
+ msgstr ""
385
+
386
+ #: importer.php:692
387
+ msgid "As user of"
388
+ msgstr ""
389
+
390
+ #: importer.php:692
391
+ msgid "WordPress Access Areas"
392
+ msgstr ""
393
+
394
+ #: importer.php:692
395
+ msgid "you can use the Access Areas created"
396
+ msgstr ""
397
+
398
+ #: importer.php:692 importer.php:942
399
+ msgid "here"
400
+ msgstr ""
401
+
402
+ #: importer.php:692
403
+ msgid ""
404
+ "and use this areas in your own CSV file. Please use the column name "
405
+ "<strong>wp-access-areas</strong> and in each row use <strong>the name that "
406
+ "you have used"
407
+ msgstr ""
408
+
409
+ #: importer.php:692
410
+ msgid ", like this ones:"
411
+ msgstr ""
412
+
413
+ #: importer.php:701
414
+ msgid ""
415
+ "If you leave this cell empty for some user or the access area indicated "
416
+ "doesn't exist, user won't be assigned to any access area. You can choose "
417
+ "more than one area for each user using pads between them in the same row, i."
418
+ "e.: "
419
+ msgstr ""
420
+
421
+ #: importer.php:708
422
+ msgid "Send mail"
423
+ msgstr ""
424
+
425
+ #: importer.php:710
426
+ msgid "Do you wish to send a mail with credentials and other data?"
427
+ msgstr ""
428
+
429
+ #: importer.php:710 importer.php:711
430
+ msgid "yes"
431
+ msgstr ""
432
+
433
+ #: importer.php:711
434
+ msgid ""
435
+ "Do you wish to send this mail also to users that are being updated? (not "
436
+ "only to the one which are being created)"
437
+ msgstr ""
438
+
439
+ #: importer.php:719
440
+ msgid "Start importing"
441
+ msgstr ""
442
+
443
+ #: importer.php:727
444
+ msgid "Please choose a file"
445
+ msgstr ""
446
+
447
+ #: importer.php:732
448
+ msgid "Please enter a path to the file"
449
+ msgstr ""
450
+
451
+ #: importer.php:737
452
+ msgid "Please select a role"
453
+ msgstr ""
454
+
455
+ #: importer.php:744
456
+ msgid "Are you sure to delete this file?"
457
+ msgstr ""
458
+
459
+ #: importer.php:753
460
+ msgid "There were problems deleting the file, please check file permissions"
461
+ msgstr ""
462
+
463
+ #: importer.php:755
464
+ msgid "File successfully deleted"
465
+ msgstr ""
466
+
467
+ #: importer.php:763
468
+ msgid ""
469
+ "Are you sure to delete ALL CSV files uploaded? There can be CSV files from "
470
+ "other plugins."
471
+ msgstr ""
472
+
473
+ #: importer.php:771
474
+ msgid "There were problems deleting the files, please check files permissions"
475
+ msgstr ""
476
+
477
+ #: importer.php:773
478
+ msgid "Files successfully deleted"
479
+ msgstr ""
480
+
481
+ #: importer.php:798
482
+ msgid "Custom columns loaded"
483
+ msgstr ""
484
+
485
+ #: importer.php:802
486
+ msgid "Columns loaded in previous files"
487
+ msgstr ""
488
+
489
+ #: importer.php:803
490
+ msgid ""
491
+ "(if you load another CSV with different columns, the new ones will replace "
492
+ "this list)"
493
+ msgstr ""
494
+
495
+ #: importer.php:812
496
+ msgid "There is no columns loaded yet"
497
+ msgstr ""
498
+
499
+ #: importer.php:831
500
+ msgid "Columns position"
501
+ msgstr ""
502
+
503
+ #: importer.php:832
504
+ msgid ""
505
+ "(Documents should look like the one presented into screenshot. Remember you "
506
+ "should fill the first two columns with the next values)"
507
+ msgstr ""
508
+
509
+ #: importer.php:835
510
+ msgid "Email"
511
+ msgstr ""
512
+
513
+ #: importer.php:837
514
+ msgid ""
515
+ "(The next columns are totally customizable and you can use whatever you "
516
+ "want. All rows must contains same columns)"
517
+ msgstr ""
518
+
519
+ #: importer.php:838
520
+ msgid "(User profile will be adapted to the kind of data you have selected)"
521
+ msgstr ""
522
+
523
+ #: importer.php:839
524
+ msgid ""
525
+ "(If you want to disable the extra profile information, please deactivate "
526
+ "this plugin after make the import)"
527
+ msgstr ""
528
+
529
+ #: importer.php:843
530
+ msgid "id"
531
+ msgstr ""
532
+
533
+ #: importer.php:844
534
+ msgid ""
535
+ "You can use a column called id in order to make inserts or updates of an "
536
+ "user using the ID used by WordPress in the wp_users table. We have two "
537
+ "different cases:"
538
+ msgstr ""
539
+
540
+ #: importer.php:846
541
+ msgid ""
542
+ "If id <strong>doesn't exist in your users table</strong>: user will be "
543
+ "inserted"
544
+ msgstr ""
545
+
546
+ #: importer.php:847
547
+ msgid ""
548
+ "If id <strong>exists</strong>: plugin check if username is the same, if yes, "
549
+ "it will update the data, if not, it ignores the cell to avoid problems"
550
+ msgstr ""
551
+
552
+ #: importer.php:852
553
+ msgid "Passwords"
554
+ msgstr ""
555
+
556
+ #: importer.php:853
557
+ msgid ""
558
+ "A string that contains user passwords. We have different options for this "
559
+ "case:"
560
+ msgstr ""
561
+
562
+ #: importer.php:855
563
+ msgid ""
564
+ "If you <strong>don't create a column for passwords</strong>: passwords will "
565
+ "be generated automatically"
566
+ msgstr ""
567
+
568
+ #: importer.php:856
569
+ msgid ""
570
+ "If you <strong>create a column for passwords</strong>: if cell is empty, "
571
+ "password won't be updated; if cell has a value, it will be used"
572
+ msgstr ""
573
+
574
+ #: importer.php:861
575
+ msgid "WordPress default profile data"
576
+ msgstr ""
577
+
578
+ #: importer.php:862
579
+ msgid ""
580
+ "You can use those labels if you want to set data adapted to the WordPress "
581
+ "default user columns (the ones who use the function"
582
+ msgstr ""
583
+
584
+ #: importer.php:864
585
+ msgid ""
586
+ "A string that contains a URL-friendly name for the user. The default is the "
587
+ "user's username."
588
+ msgstr ""
589
+
590
+ #: importer.php:865
591
+ msgid "A string containing the user's URL for the user's web site."
592
+ msgstr ""
593
+
594
+ #: importer.php:866
595
+ msgid ""
596
+ "A string that will be shown on the site. Defaults to user's username. It is "
597
+ "likely that you will want to change this, for both appearance and security "
598
+ "through obscurity (that is if you don't use and delete the default admin "
599
+ "user)."
600
+ msgstr ""
601
+
602
+ #: importer.php:867
603
+ msgid "The user's nickname, defaults to the user's username."
604
+ msgstr ""
605
+
606
+ #: importer.php:868
607
+ msgid "The user's first name."
608
+ msgstr ""
609
+
610
+ #: importer.php:869
611
+ msgid "The user's last name."
612
+ msgstr ""
613
+
614
+ #: importer.php:870
615
+ msgid "A string containing content about the user."
616
+ msgstr ""
617
+
618
+ #: importer.php:871
619
+ msgid "User's Jabber account."
620
+ msgstr ""
621
+
622
+ #: importer.php:872
623
+ msgid "User's AOL IM account."
624
+ msgstr ""
625
+
626
+ #: importer.php:873
627
+ msgid "User's Yahoo IM account."
628
+ msgstr ""
629
+
630
+ #: importer.php:874
631
+ msgid "Using the WordPress format for this kind of data Y-m-d H:i:s."
632
+ msgstr ""
633
+
634
+ #: importer.php:881
635
+ msgid "WooCommerce is activated"
636
+ msgstr ""
637
+
638
+ #: importer.php:882
639
+ msgid ""
640
+ "You can use those labels if you want to set data adapted to the WooCommerce "
641
+ "default user columns"
642
+ msgstr ""
643
+
644
+ #: importer.php:910
645
+ msgid "Important notice"
646
+ msgstr ""
647
+
648
+ #: importer.php:911
649
+ msgid ""
650
+ "You can upload as many files as you want, but all must have the same "
651
+ "columns. If you upload another file, the columns will change to the form of "
652
+ "last file uploaded."
653
+ msgstr ""
654
+
655
+ #: importer.php:914
656
+ msgid "Any question about it"
657
+ msgstr ""
658
+
659
+ #: importer.php:917
660
+ msgid "Free support (in WordPress forums):"
661
+ msgstr ""
662
+
663
+ #: importer.php:918
664
+ msgid "Premium support (with a quote):"
665
+ msgstr ""
666
+
667
+ #: importer.php:923
668
+ msgid "Example"
669
+ msgstr ""
670
+
671
+ #: importer.php:924
672
+ msgid "Download this"
673
+ msgstr ""
674
+
675
+ #: importer.php:924
676
+ msgid "file"
677
+ msgstr ""
678
+
679
+ #: importer.php:924
680
+ msgid "to test"
681
+ msgstr ""
682
+
683
+ #: importer.php:942
684
+ msgid "You can set your own SMTP and other mail details"
685
+ msgstr ""
686
+
687
+ #: importer.php:947
688
+ msgid "WordPress automatic emails users updated"
689
+ msgstr ""
690
+
691
+ #: importer.php:951
692
+ msgid "Send automattic WordPress emails?"
693
+ msgstr ""
694
+
695
+ #: importer.php:955
696
+ msgid ""
697
+ "Deactivate WordPress automattic email when an user is updated or his "
698
+ "password is changed"
699
+ msgstr ""
700
+
701
+ #: importer.php:956
702
+ msgid ""
703
+ "Activate WordPress automattic email when an user is updated or his password "
704
+ "is changed"
705
+ msgstr ""
706
+
707
+ #: importer.php:958
708
+ msgid ""
709
+ "When you update an user or change his password, WordPress prepare and send "
710
+ "automattic email, you can deactivate it here."
711
+ msgstr ""
712
+
713
+ #: importer.php:966
714
+ msgid "Customize the email that can be sent when importing users"
715
+ msgstr ""
716
+
717
+ #: importer.php:968
718
+ msgid "Mail subject :"
719
+ msgstr ""
720
+
721
+ #: importer.php:976
722
+ msgid "username to login"
723
+ msgstr ""
724
+
725
+ #: importer.php:977
726
+ msgid "user password"
727
+ msgstr ""
728
+
729
+ #: importer.php:978
730
+ msgid "current site login url"
731
+ msgstr ""
732
+
733
+ #: importer.php:979
734
+ msgid "lost password url"
735
+ msgstr ""
736
+
737
+ #: importer.php:980
738
+ msgid "password reset url"
739
+ msgstr ""
740
+
741
+ #: importer.php:981
742
+ msgid "user email"
743
+ msgstr ""
744
+
745
+ #: importer.php:982
746
+ msgid ""
747
+ "You can also use any WordPress user standard field or an own metadata, if "
748
+ "you have used it in your CSV. For example, if you have a first_name column, "
749
+ "you could use **first_name** or any other meta_data like **my_custom_meta**"
750
+ msgstr ""
751
+
752
+ #: importer.php:1038
753
+ msgid "Execute an import of users periodically"
754
+ msgstr ""
755
+
756
+ #: importer.php:1044
757
+ msgid "Path of file that are going to be imported"
758
+ msgstr ""
759
+
760
+ #: importer.php:1046 importer.php:1137
761
+ msgid "Insert complete path to the file"
762
+ msgstr ""
763
+
764
+ #: importer.php:1051
765
+ msgid "Period"
766
+ msgstr ""
767
+
768
+ #: importer.php:1054
769
+ msgid "Hourly"
770
+ msgstr ""
771
+
772
+ #: importer.php:1055
773
+ msgid "Twicedaily"
774
+ msgstr ""
775
+
776
+ #: importer.php:1056
777
+ msgid "Daily"
778
+ msgstr ""
779
+
780
+ #: importer.php:1058
781
+ msgid "How often the event should reoccur?"
782
+ msgstr ""
783
+
784
+ #: importer.php:1062
785
+ msgid "Activate periodical import?"
786
+ msgstr ""
787
+
788
+ #: importer.php:1068
789
+ msgid "Send mail when using periodical import?"
790
+ msgstr ""
791
+
792
+ #: importer.php:1074
793
+ msgid "Send mail also to users that are being updated?"
794
+ msgstr ""
795
+
796
+ #: importer.php:1080
797
+ msgid "Delete users that are not present in the CSV?"
798
+ msgstr ""
799
+
800
+ #: importer.php:1089 importer.php:1091
801
+ msgid "Delete posts of deled users without assing to any user"
802
+ msgstr ""
803
+
804
+ #: importer.php:1103
805
+ msgid ""
806
+ "After delete users, we can choose if we want to assign their posts to "
807
+ "another user. Please do not delete them or posts will be deleted."
808
+ msgstr ""
809
+
810
+ #: importer.php:1113 importer.php:1115
811
+ msgid "Disable role assignement in cron import"
812
+ msgstr ""
813
+
814
+ #: importer.php:1126
815
+ msgid "Which role would be used to import users?"
816
+ msgstr ""
817
+
818
+ #: importer.php:1130
819
+ msgid "Move file after import?"
820
+ msgstr ""
821
+
822
+ #: importer.php:1143
823
+ msgid "Auto rename after move?"
824
+ msgstr ""
825
+
826
+ #: importer.php:1150
827
+ msgid ""
828
+ "Your file will be renamed after moved, so you will not lost any version of "
829
+ "it. The way to rename will be append the time stamp using this date format: "
830
+ "YmdHis."
831
+ msgstr ""
832
+
833
+ #: importer.php:1155
834
+ msgid "Last actions of schedule task"
835
+ msgstr ""
836
+
837
+ #: importer.php:1162
838
+ msgid "Save schedule options"
839
+ msgstr ""
840
+
841
+ #: importer.php:1169
842
+ msgid ""
843
+ "Are you sure to delete all users that are not present in the CSV? This "
844
+ "action cannot be undone."
845
+ msgstr ""
846
+
847
+ #: importer.php:1203
848
+ msgid "Do you like it?"
849
+ msgstr ""
850
+
851
+ #: importer.php:1206
852
+ msgid "buy me a coffee"
853
+ msgstr ""
854
+
855
+ #: importer.php:1207 importer.php:1227
856
+ msgid "Hi! we are"
857
+ msgstr ""
858
+
859
+ #: importer.php:1207 importer.php:1227
860
+ msgid "and"
861
+ msgstr ""
862
+
863
+ #: importer.php:1207 importer.php:1227
864
+ msgid "from"
865
+ msgstr ""
866
+
867
+ #: importer.php:1207 importer.php:1227
868
+ msgid "developers of this plugin."
869
+ msgstr ""
870
+
871
+ #: importer.php:1208
872
+ msgid ""
873
+ "We have been spending many hours to develop this plugin. <br>If you like and "
874
+ "use this plugin, you can <strong>buy us a cup of coffee</strong>."
875
+ msgstr ""
876
+
877
+ #: importer.php:1212
878
+ msgid "PayPal – The safer, easier way to pay online."
879
+ msgstr ""
880
+
881
+ #: importer.php:1224
882
+ msgid "Need help with WordPress or WooCommerce?"
883
+ msgstr ""
884
+
885
+ #: importer.php:1228
886
+ msgid ""
887
+ "We work everyday with WordPress and WooCommerce, if you need help hire us, "
888
+ "send us a message to"
889
+ msgstr ""
890
+
891
+ #: smtp.php:26 smtp.php:245
892
+ msgid "Send Test"
893
+ msgstr ""
894
+
895
+ #: smtp.php:40
896
+ msgid "Test mail to "
897
+ msgstr ""
898
+
899
+ #: smtp.php:41
900
+ msgid ""
901
+ "This is a test email generated by the Import User From CSV With Meta "
902
+ "WordPress plugin."
903
+ msgstr ""
904
+
905
+ #: smtp.php:79
906
+ msgid "Message sent successfully"
907
+ msgstr ""
908
+
909
+ #: smtp.php:83
910
+ msgid "Test Message Sent"
911
+ msgstr ""
912
+
913
+ #: smtp.php:84
914
+ msgid "The result was:"
915
+ msgstr ""
916
+
917
+ #: smtp.php:86
918
+ msgid "The full debugging output is shown below:"
919
+ msgstr ""
920
+
921
+ #: smtp.php:88
922
+ msgid "The SMTP debugging output is shown below:"
923
+ msgstr ""
924
+
925
+ #: smtp.php:119
926
+ msgid "Import User From CSV With Meta - SMTP server options"
927
+ msgstr ""
928
+
929
+ #: smtp.php:123
930
+ msgid "Global options"
931
+ msgstr ""
932
+
933
+ #: smtp.php:124
934
+ msgid ""
935
+ "Do you want to use your own SMTP settings for this plugin or the WordPress "
936
+ "settings."
937
+ msgstr ""
938
+
939
+ #: smtp.php:128
940
+ msgid "Settings"
941
+ msgstr ""
942
+
943
+ #: smtp.php:131
944
+ msgid "Use plugin SMTP settings"
945
+ msgstr ""
946
+
947
+ #: smtp.php:133
948
+ msgid "Use this settings to send mail."
949
+ msgstr ""
950
+
951
+ #: smtp.php:135
952
+ msgid "Use WordPress general settings to send mail."
953
+ msgstr ""
954
+
955
+ #: smtp.php:143
956
+ msgid "From Email"
957
+ msgstr ""
958
+
959
+ #: smtp.php:145
960
+ msgid ""
961
+ "You can specify the email address that emails should be sent from. If you "
962
+ "leave this blank, the default email will be used."
963
+ msgstr ""
964
+
965
+ #: smtp.php:145
966
+ msgid ""
967
+ "<strong>Please Note:</strong> You appear to be using a version of WordPress "
968
+ "prior to 2.3. Please ignore the From Name field and instead enter Name&lt;"
969
+ "email@domain.com&gt; in this field."
970
+ msgstr ""
971
+
972
+ #: smtp.php:148
973
+ msgid "From Name"
974
+ msgstr ""
975
+
976
+ #: smtp.php:150
977
+ msgid ""
978
+ "You can specify the name that emails should be sent from. If you leave this "
979
+ "blank, the emails will be sent from WordPress."
980
+ msgstr ""
981
+
982
+ #: smtp.php:156 smtp.php:159
983
+ msgid "Mailer"
984
+ msgstr ""
985
+
986
+ #: smtp.php:161
987
+ msgid "Send emails of this plugin via SMTP."
988
+ msgstr ""
989
+
990
+ #: smtp.php:163
991
+ msgid "Use the PHP mail() function to send emails."
992
+ msgstr ""
993
+
994
+ #: smtp.php:171 smtp.php:174
995
+ msgid "Return Path"
996
+ msgstr ""
997
+
998
+ #: smtp.php:176
999
+ msgid "Set the return-path to match the From Email"
1000
+ msgstr ""
1001
+
1002
+ #: smtp.php:182
1003
+ msgid "SMTP Options"
1004
+ msgstr ""
1005
+
1006
+ #: smtp.php:183
1007
+ msgid "These options only apply if you have chosen to send mail by SMTP above."
1008
+ msgstr ""
1009
+
1010
+ #: smtp.php:187
1011
+ msgid "SMTP Host"
1012
+ msgstr ""
1013
+
1014
+ #: smtp.php:191
1015
+ msgid "SMTP Port"
1016
+ msgstr ""
1017
+
1018
+ #: smtp.php:195 smtp.php:198
1019
+ msgid "Encryption"
1020
+ msgstr ""
1021
+
1022
+ #: smtp.php:200
1023
+ msgid "No encryption."
1024
+ msgstr ""
1025
+
1026
+ #: smtp.php:202
1027
+ msgid "Use SSL encryption."
1028
+ msgstr ""
1029
+
1030
+ #: smtp.php:204
1031
+ msgid ""
1032
+ "Use TLS encryption. This is not the same as STARTTLS. For most servers SSL "
1033
+ "is the recommended option."
1034
+ msgstr ""
1035
+
1036
+ #: smtp.php:208
1037
+ msgid "Authentication"
1038
+ msgstr ""
1039
+
1040
+ #: smtp.php:211
1041
+ msgid "No: Do not use SMTP authentication."
1042
+ msgstr ""
1043
+
1044
+ #: smtp.php:213
1045
+ msgid "Yes: Use SMTP authentication."
1046
+ msgstr ""
1047
+
1048
+ #: smtp.php:214
1049
+ msgid "If this is set to no, the values below are ignored."
1050
+ msgstr ""
1051
+
1052
+ #: smtp.php:227
1053
+ msgid "Save Changes"
1054
+ msgstr ""
1055
+
1056
+ #: smtp.php:234
1057
+ msgid "Send a Test Email"
1058
+ msgstr ""
1059
+
1060
+ #: smtp.php:240
1061
+ msgid "To:"
1062
+ msgstr ""
1063
+
1064
+ #: smtp.php:242
1065
+ msgid ""
1066
+ "Type an email address here and then click Send Test to generate a test email."
1067
+ msgstr ""
trunk/readme.txt ADDED
@@ -0,0 +1,745 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Import users from CSV with meta ===
2
+ Contributors: carazo, hornero
3
+ Donate link: http://paypal.me/codection
4
+ Tags: csv, import, importer, meta data, meta, user, users, user meta, editor, profile, custom, fields, delimiter, update, insert
5
+ Requires at least: 3.4
6
+ Tested up to: 5.1
7
+ Stable tag: 1.14
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ A plugin to import users using CSV files to WP database automatically including custom user meta
12
+
13
+ == Description ==
14
+
15
+ Clean and easy-to-use Import users plugin. It includes custom user meta to be included automatically from a CSV file and delimitation auto-detector. It also is able to send a mail to each user imported and all the meta data imported is ready to edit into user profile.
16
+
17
+ * Import CSV file with users directly to your WordPress
18
+ * Import thousends of users in only some seconds
19
+ * You can also import meta-data like data from WooCommerce customers using the correct meta_keys
20
+ * Send a mail to every new user
21
+ * Use your own
22
+ * You can also update data of each user
23
+ * Assing a role
24
+ * Create a cron task to import users periodically
25
+ * Edit the metadata (you will be able to edit the metadata imported using metakeys directly in the profile of each user)
26
+ * Read our documentation
27
+ * Ask anything in support forum, we try to give the best support
28
+
29
+ In Codection we have more plugins, please take a look to them.
30
+
31
+ * [RedSys Gateway for WooCommerce Pro a plugin to connect your WooCommerce to RedSys](https://codection.com/producto/redsys-gateway-for-woocommerce) (premium)
32
+ * [Ceca Gateway for WooCommerce Pro a plugin to connect your WooCommerce to Ceca](https://codection.com/producto/ceca-gateway-for-woocommerce-pro/) (premium)
33
+ * [BBVA Bancomer for WooCommerce Pro a plugin to connect your WooCommerce to BBVA Bancomer](https://codection.com/producto/bbva-bancomer-mexico-gateway-for-woocommerce-pro/) (premium)
34
+ * [RedSys Button for WordPress a plugin to receive payments using RedSys in WordPress without using WooCommerce](https://codection.com/producto/redsys-button-wordpress/) (premium)
35
+ * [RedSys Gateway for Contact Form 7 a plugin to receive payments using RedSys in WordPress using the popular contact plugin Contact Form 7](https://codection.com/producto/redsys-gateway-for-contact-form-7/) (premium)
36
+ * [Ceca Gateway for Contact Form 7 a plugin to receive payments using Ceca in WordPress using the popular contact plugin Contact Form 7](https://codection.com/producto/ceca-gateway-for-contact-form-7/) (premium)
37
+ * [RedSys Gateway for WP Booking Calendar Pro a plugin to receive payments using RedSys in WordPress using WP Booking Calendar Pro](https://codection.com/producto/redsys-gateway-for-wp-booking-calendar-pro/) (premium)
38
+ * [RedSys Gateway for Goodlayers Tourmaster Pro a plugin to receive payments using RedSys in WordPress using Goodlayers Tourmaster Pro](https://codection.com/producto/redsys-gateway-for-goodlayers-tourmaster-pro/) (premium)
39
+ * [Clean Login a plugin to create your own register, log in, lost password and update profile forms](https://wordpress.org/plugins/clean-login/) (free)
40
+ * [First payment date for WooCommerce Subscriptions a plugin to make able your subscriptions to start being paid in a specified date](https://wordpress.org/plugins/first-payment-date-for-woocommerce-subscriptions/) (free)
41
+
42
+ ## **Basics**
43
+
44
+ * Import users from a CSV easily
45
+ * And also extra profile information with the user meta data (included in the CSV with your custom fields)
46
+ * Just upload the CSV file (one included as example)
47
+ * All your users will be created/updated with the updated information, and of course including the user meta
48
+ * Autodetect delimiter compatible with `comma , `, `semicolon ; ` and `bar | `
49
+
50
+ ## **Usage**
51
+
52
+ Once the plugin is installed you can use it. Go to Tools menu and there, there will be a section called _Insert users from CSV_. Just choose your CSV file and go!
53
+
54
+ ### **CSV generation**
55
+
56
+ You can generate CSV file with all users inside it, using a standar spreadsheet software like: Microsoft Excel, LibreOffice Calc, OpenOffice Calc or Gnumeric.
57
+
58
+ You have to create the file filled with information (or take it from another database) and you will only have to choose CSV file when you "Save as..." the file. As example, a CSV file is included with the plugin.
59
+
60
+ ### **Some considerations**
61
+
62
+ Plugin will automatically detect:
63
+
64
+ * Charset and set it to **UTF-8** to prevent problems with non-ASCII characters.
65
+ * It also will **auto detect line-ending** to prevent problems with different OS.
66
+ * Finally, it will **detect the delimiter** being used in CSV file
67
+
68
+ == Screenshots ==
69
+
70
+ 1. Plugin link from dashboard
71
+ 2. Plugin page
72
+ 3. CSV file structure
73
+ 4. Users imported
74
+ 5. Extra profile information (user meta)
75
+
76
+ == Changelog ==
77
+
78
+ = 1.14 =
79
+ * Now you can change the role of users that are not in the CSV file thanks to California Advocates Management Services
80
+ * Options management improved
81
+ * GUI improved
82
+ * Some hooks added
83
+
84
+ = 1.13.2 =
85
+ * Attachments in email templates and mail options now can be deleted thanks to Joel Frankwick
86
+
87
+ = 1.13.1 =
88
+ * Email templates loads also the attachment in Mail options when they are selected thanks to Joel Frankwick
89
+
90
+ = 1.13 =
91
+ * Now you can delete users that are not in the CSV file, not only when you are doing an import based on a cron task, but also when you do it from the dashboard or with the shortcode in the frontend thanks to mojosolo.com
92
+ * Documentation improved
93
+ * Bug fixed
94
+ * Tested up to 5.1
95
+
96
+ = 1.12.6.2 =
97
+ * Notices fixed
98
+ * Some file deleted and some urls fixed
99
+
100
+ = 1.12.6.1 =
101
+ * Plugin is now compatible with plugins that change login url, thanks to @2candela2 (https://wordpress.org/support/topic/make-it-compatible-with-plugins-that-change-login-url/)
102
+
103
+ = 1.12.6 =
104
+ * wpml-config.xml added to improve compatibility with WPML
105
+ * Warnings fixed
106
+
107
+ = 1.12.5.1 =
108
+ * Fixed some files that were not included in the trunk
109
+
110
+ = 1.12.5 =
111
+ * New addon added thanks to @egraznov in order to make possible to import data from LifterLMS
112
+
113
+ = 1.12.4 =
114
+ * New hooks added to make possible to include new tabs from an addon
115
+
116
+ = 1.12.3.1 =
117
+ * Fatal error fixed in frontend tab
118
+
119
+ = 1.12.3 =
120
+ * Integration with Paid Membership Pro improved thanks to @joneiseman (https://wordpress.org/support/topic/import-paid-membership-pro-fields-not-working/#post-11110984)
121
+
122
+ = 1.12.2.3 =
123
+ * Readme updated
124
+
125
+ = 1.12.2.2 =
126
+ * Readme fixed
127
+
128
+ = 1.12.2.1 =
129
+ * SMTP settings removed, old link was yet placed and caused misunderstandings, thanks to @paulabender for the notice
130
+ * Tested up to WordPress 5.0.3
131
+
132
+ = 1.12.2 =
133
+ * Extra check to avoid problems with CSV bad formed
134
+ * Plugin can now manage attachments in email sending and email templates thanks to Immersedtechnologies
135
+ * Part of the code has been rewritten using classes
136
+ * We have changed the way of detecting the delimiter (thanks to @chaskinsuk https://wordpress.org/support/topic/detect-delimiter-fails-with-serialized-data/)
137
+
138
+ = 1.12.1 =
139
+ * Filter added to avoid script inside values of each cells to prevent XSS attacks, thanks for reporting Slawek Zytko
140
+
141
+ = 1.12 =
142
+ * Plugin can now manage email templates for managing mails which are sent to users thanks to Immersedtechnologies
143
+
144
+ = 1.11.3.17 =
145
+ * Documentation improved with some notes about roles management thanks to @stephenfourie (https://wordpress.org/support/topic/user-role-always-set-as-administrator/)
146
+
147
+ = 1.11.3.16 =
148
+ * Redeclaration of str_getcsv removed, this is not necessary because of all new PHP versions contains it
149
+
150
+ = 1.11.3.15 =
151
+ * Filters included for auto password generated
152
+ * Tested up to WordPress 5.0
153
+
154
+ = 1.11.3.14 =
155
+ * Empty email check added thanks to @malcolm-oph (https://wordpress.org/support/topic/blank-email-field-in-csv-data-not-detected/)
156
+
157
+ = 1.11.3.13 =
158
+ * Mail address with data of users can now be overriden thanks to a new filter
159
+
160
+ = 1.11.3.12 =
161
+ * Plugin is now compatible with Vimeo Sync Membership thanks to Justin Snavely
162
+
163
+ = 1.11.3.11 =
164
+ * Now you can use the WordPress loaded schedules in the cron import instead of the three default one thanks to PM2S
165
+ * Mail cron sending fixed issues
166
+
167
+ = 1.11.3.10 =
168
+ * New hooks added thanks to Joel Frankwick in order to make possible to change default wp_mail() headers
169
+
170
+ = 1.11.3.9 =
171
+ * New hooks added thanks to @malcolm-oph (https://wordpress.org/support/topic/using-filters-to-add-data-columns/)
172
+
173
+ = 1.11.3.8.1 =
174
+ * Fixed bug thanks to @xenator for discovering the bug (https://wordpress.org/support/topic/uncaught-error-while-importing-users/#post-10618130)
175
+
176
+ = 1.11.3.8 =
177
+ * Fixed mail sending in frontend import
178
+ * Now you can activate users with WP Members in frontend import
179
+ * Some fixes and warnings added
180
+
181
+ = 1.11.3.7 =
182
+ * Fixes and improvements thanks to @malcolm-oph
183
+
184
+ = 1.11.3.6 =
185
+ * Role import working in cron jobs
186
+
187
+ = 1.11.3.5 =
188
+ * SMTP tab hidden for user which are not using this option
189
+
190
+ = 1.11.3.4 =
191
+ * Bug fixed: thanks to @oldfieldmike for reporting and fixing a bug present when BuddyPress was active (https://wordpress.org/support/topic/bp_xprofile_group/#post-10265833)
192
+
193
+ = 1.11.3.3 =
194
+ * Added compatibility to import levels from Indeed Ultimate Membership Pro
195
+ * Fixed role problems when importing
196
+
197
+ = 1.11.3.2 =
198
+ * Patreon link included and some other improvements to make easier support this develop
199
+ * Deprecated notices included about SMTP settings in this plugin
200
+
201
+ = 1.11.3.1 =
202
+ * Thanks to Sebastian Mellmann(@xenator) a bug have been solved in password management in new users
203
+
204
+ = 1.11.3 =
205
+ * Thanks to @xenator you can now import users with Allow Multiple Accounts with same Mail via cron
206
+
207
+ = 1.11.2 =
208
+ * Problem with WordPress default emails fixed
209
+
210
+ = 1.11.1 =
211
+ * Sidebar changed
212
+ * Readme completed
213
+
214
+ = 1.11 =
215
+ * You can now import users from the frontend using a shortcode thanks to Nelson Artz Group GmbH & Co. KG
216
+
217
+ = 1.10.13 =
218
+ * You can now import User Groups (https://wordpress.org/plugins/user-groups/) and assign them to the users
219
+
220
+ = 1.10.12 =
221
+ * You can now import WP User Groups (https://es.wordpress.org/plugins/wp-user-groups/) and assign them to the users thanks to the support of Arturas & Luis, Lda.
222
+
223
+ = 1.10.11.1 =
224
+ * Debug notice shown fixed (thanks for submiting the bug @anieves (https://wordpress.org/support/topic/problem-using-wp-members-with-import-users-from-csv-2/#post-10035037)
225
+
226
+ = 1.10.11 =
227
+ * Administrator are not deleted in cron task
228
+ * Some hashed passwords was not being imported correctly because of wp_unslash() function into wp_insert_user(), issue fixed
229
+
230
+ = 1.10.10 =
231
+ * Thanks to Attainable Adventure Cruising Ltd now the system to import passwords hashed directly from the CSV has been fixed
232
+ * Thanks to Kevin Price-Ward and Peri Lane now the system does not include the default role when creating a new user
233
+ * Plugin tested up to WordPress 4.9.4
234
+
235
+ = 1.10.9.1 =
236
+ * Thanks to @lucile-agence-pulsi for reporting a bug (https://wordpress.org/support/topic/show-extra-profile-fields/) now this is solved
237
+
238
+ = 1.10.9 =
239
+ * Thanks to the support of Studio MiliLand (http://www.mililand.com) we can now import data to Paid Membership Pro Plugin
240
+
241
+ = 1.10.8.2 =
242
+ * Thanks to @Carlos Herrera we can now import date fields from BuddyPress
243
+
244
+ = 1.10.8.1 =
245
+ * Bug fixed
246
+
247
+ = 1.10.8 =
248
+ * New system for include addons
249
+ * You can now import data from WooCommerce Membership thanks to Lukas from Kousekmusic.cz
250
+ * Tested up to WordPress 4.9
251
+
252
+ = 1.10.7.5 =
253
+ * Bug solved in cron import, now mails not being sent to user who are being updated unless you activate those mails
254
+
255
+ = 1.10.7.4 =
256
+ * Plugin now remember if user has selected or not mail sending when doing a manual import, to select by default this option next time
257
+
258
+ = 1.10.7.3 =
259
+ * Some of the plugins options are disabled by default to prevent unwanted mail sending
260
+
261
+ = 1.10.7.2 =
262
+ * Improve email notification disable
263
+
264
+ = 1.10.7.1 =
265
+ * Sending mail in standard import bug solved, thanks to @manverupl for the error report.
266
+
267
+ = 1.10.7 =
268
+ * New feature thanks to Todd Zaroban (@tzarob) now you can choose if override or not current roles of each user when you are updating them
269
+ * Problem solved in repeated email module thanks to @damienper (https://wordpress.org/support/topic/error-in-email_repeated-php/)
270
+ * Problem solved in mail sending with cron thanks to @khansadi (https://wordpress.org/support/topic/no-email-is-sent-to-new-users-when-created-via-corn-import/)
271
+
272
+ = 1.10.6.9 =
273
+ * Thanks to Peri Lane from Apis Productions you can now import roles from CSV. Read documentation to see the way to work.
274
+
275
+ = 1.10.6.8.1 =
276
+ * Thanks to @fiddla for debugging all this, as update_option with a value equals to true is saved as 1 in the database, we couldn't use the ==! or === operator to see if the option was active or not. Sorry for so many updates those days with this problems and thanks for the debugging
277
+
278
+ = 1.10.6.8 =
279
+ * Bug fixed (now yes) when moving file including date and time thanks to @fiddla
280
+
281
+ = 1.10.6.7 =
282
+ * Bug fixed when moving file including date and time
283
+
284
+ = 1.10.6.6 =
285
+ * Bug fixed thanks to @ov3rfly (https://wordpress.org/support/topic/wrong-path-to-users-page-after-import/)
286
+ * Documentation also included in home page of the plugins thanks to suggestions and threads in forum
287
+
288
+ = 1.10.6.5 =
289
+ * If multisite is enabled it adds the user to the blog thanks to Rudolph Koegelenberg
290
+ * Tested up to 4.8
291
+
292
+ = 1.10.6.4 =
293
+ * Documentation fixed: if user id is present in the CSV but not in the database, it cannot be used to create a new user
294
+
295
+ = 1.10.6.3 =
296
+ * New hook added do_action('post_acui_import_single_user', $headers, $data, $user_id );
297
+
298
+ = 1.10.6.2 =
299
+ * Added documentation about locale and BuddyPress Extendend Profile
300
+ * Header changed to avoid any problem about plugin header
301
+
302
+ = 1.10.6.1 =
303
+ * Fix error in importer.php about delete users (https://wordpress.org/support/topic/wp_delete_user-undefined/#post-8925051)
304
+
305
+ = 1.10.6 =
306
+ * Now you can hide the extra profile fields created with the plugin thanks to Steph O'Brien (Ruddy Good)
307
+
308
+ = 1.10.5 =
309
+ * Now you can import list of elements using :: as separator and it can also be done in BuddyPress profile fields thanks to Jon Eiseman
310
+ * Fixes in SMTP settings
311
+ * SMTP settings now is a new tab
312
+
313
+ = 1.10.4 =
314
+ * Now you can assign BuddyPress groups and assign roles in import thanks to TNTP (tntp.org)
315
+ * Import optimization
316
+ * Readme fixed
317
+
318
+ = 1.10.3.1 =
319
+ * Bug fixed in SMTP settings page
320
+
321
+ = 1.10.3 =
322
+ * Plugin is now prepared for internacionalization using translate.wordpress.org
323
+
324
+ = 1.10.2.2 =
325
+ * German translation fixed thanks to @mfgmicha
326
+ * locale now is considered a data from WordPress user so it won't be shown in profiles
327
+
328
+ = 1.10.2.1 =
329
+ * German translation fixed thanks to @barcelo
330
+ * System compatibility updated
331
+
332
+ = 1.10.2 =
333
+ * New User Approve support fixed thanks to @stephanemartinw (https://wordpress.org/support/topic/new-user-approve-support/#post-8749012)
334
+
335
+ = 1.10.1 =
336
+ * Plugin can now import serialized data.
337
+ * New filter added: $data[$i] = apply_filters( 'pre_acui_import_single_user_single_data', $data[$i], $headers[$i], $i); now you can manage each single data for each user, maybe easier to use than pre_acui_import_single_user_data
338
+
339
+
340
+ = 1.9.9.9 =
341
+ * Now you can automatically rename file after move it. Then you won't lost any file you have imported (thanks to @charlesgodwin)
342
+
343
+ = 1.9.9.8 =
344
+ * Password bug fixed. Now it works as it should (like it is explained in documentation)
345
+
346
+ = 1.9.9.7 =
347
+ * Bug fixed in importer now value 0 is not considered as empty thanks to @lafare (https://wordpress.org/support/topic/importing-values-equal-to-0/#post-8609191)
348
+
349
+ = 1.9.9.6 =
350
+ * From now we are going to keep old versions available in repository
351
+ * We don't delete loaded columns (and fields) when you deactivate the plugin
352
+ * Password is not auto generated when updating user in order to avoid problems (missing password column and update create new passwords and use to create problems)
353
+
354
+ = 1.9.9.5 =
355
+ * Now you can set the email to empty in each row thanks to @sternhagel
356
+
357
+ = 1.9.9.4 =
358
+ * German language added thanks to Wolfgang Kleinrath
359
+ * Added conditional to avoid error on mail sending
360
+
361
+ = 1.9.9.3 =
362
+ * Now you can choose if you want to not assign a role to users when you are making an import cron
363
+
364
+ = 1.9.9.2 =
365
+ * Now you can choose if you want to assign to some user the posts of the users that can be deleted in cron task
366
+
367
+ = 1.9.9.1 =
368
+ * French translation added thanks to @momo-fr
369
+
370
+ = 1.9.9 =
371
+ * Plugin now is localized using i18n thanks to code provided by Toni Ginard @toniginard
372
+
373
+ = 1.9.8.1 =
374
+ * Bug fixed in cron import, nonce conditional check, thanks to Ville Kokkala for showing the bug
375
+
376
+ = 1.9.8 =
377
+ * Password reset url is now available to include in body email thanks to Mary Wheeler (https://wordpress.org/support/users/ransim/)
378
+
379
+ = 1.9.7 =
380
+ * Thanks to Bruce MacPherson we can now choose if we don't want update users roles when importing data if user exist
381
+ * Clearer English thanks to Bruce MacPherson
382
+
383
+ = 1.9.6 =
384
+ * Thanks to Jason Lewis we can now choose if we don't want update users when importing data if user exist
385
+
386
+ = 1.9.5 =
387
+ * Important security fixes added thanks to pluginvulnerabilities.com
388
+
389
+ = 1.9.4.6 =
390
+ * New filter added, thanks to @burton-nerd
391
+
392
+ = 1.9.4.5 =
393
+ * Renamed function to avoid collisions thanks to the message of Jason Lewis
394
+
395
+ = 1.9.4.4 =
396
+ * Fix for the last one, we set true where it was false and vice versa
397
+
398
+ = 1.9.4.3 =
399
+ * We try to make it clear to choose if mails (the one we talked in 1.9.4.2) are being sent or not
400
+
401
+ = 1.9.4.2 =
402
+ * Automatic WordPress emails sending deactivated by default when user is created or updated, thanks to Peter Gariepy
403
+
404
+ = 1.9.4.1 =
405
+ * wpautop added again
406
+
407
+ = 1.9.4 =
408
+ * user_pass can be imported directly hashed thanks to Bad Yogi
409
+
410
+ = 1.9.3 =
411
+ * Now you can move file after cron, thanks to Yme Brugts for supporting this new feature
412
+
413
+ = 1.9.2 =
414
+ * New hook added, thanks to borkenkaefer
415
+
416
+ = 1.9.1 =
417
+ * Fix new feature thanks to bixul ( https://wordpress.org/support/topic/problems-with-user-xxx-error-invalid-user-id?replies=3#post-8572766 )
418
+
419
+ = 1.9 =
420
+ * New feature thanks to Ken Hagen - V3 Insurance Partners LLC, now you can import users directly with his ID or update it using his user ID, please read documentation tab for more information about it
421
+ * New hooks added thank to the idea of borkenkaefer, in the future we will include more and better hooks (actions and filters)
422
+ * Compatibility with New User Approve fixed
423
+
424
+ = 1.8.9 =
425
+ * Lost password link included in the mail template thanks to alex@marckdesign.net
426
+
427
+ = 1.8.8 =
428
+ * Checkbox included in order to avoid sending mail accidentally on password change or user updated.
429
+
430
+ = 1.8.7.4 =
431
+ * Documentation updated.
432
+
433
+ = 1.8.7.3 =
434
+ * Autoparagraph in email text to solve problem about all text in the same line.
435
+ * Tested up to 4.5.1
436
+
437
+ = 1.8.7.2 =
438
+ * Bug in delete_user_meta solved thanks for telling us lizzy2surge
439
+
440
+ = 1.8.7.1 =
441
+ * Bug in HTML mails solved
442
+
443
+ = 1.8.7 =
444
+ * You can choose between plugin mail settings or WordPress mail settings, thanks to Awaken Solutions web design (http://www.awakensolutions.com/)
445
+
446
+ = 1.8.6 =
447
+ * Bug detected in mailer settings, thanks to Carlos (satrebil@gmail.com)
448
+
449
+ = 1.8.5 =
450
+ * Include code changed, after BuddyPress adaptations we break the SMTP settings when activating
451
+
452
+ = 1.8.4 =
453
+ * Labels for mail sending were creating some misunderstandings, we have changed it
454
+
455
+ = 1.8.3 =
456
+ * Deleted var_dump message to debug left accidentally
457
+
458
+ = 1.8.2 =
459
+ * BuddyPress fix in some installation to avoid a fatal error
460
+
461
+ = 1.8.1 =
462
+ * Now you have to select at least a role, we want to prevent the problem of "No roles selected"
463
+ * You can import now BuddyPress fields with this plugin thanks to André Ihlar
464
+
465
+ = 1.8 =
466
+ * Email template has an own custom tab thanks to Amanda Ruggles
467
+ * Email can be sent when you are doing a cron import thanks to Amanda Ruggles
468
+
469
+ = 1.7.9 =
470
+ * Now you can choose if you want to send the email to all users or only to creted users (not to the updated one) thanks to Remy Medranda
471
+ * Compatibility with New User Approve (https://es.wordpress.org/plugins/new-user-approve/) included thanks to Remy Medranda
472
+
473
+ = 1.7.8 =
474
+ * Metadata can be sent in the mail thanks to Remy Medranda
475
+
476
+ = 1.7.7 =
477
+ * Bad link fixed and new links added to the plugin
478
+
479
+ = 1.7.6 =
480
+ * Capability changed from manage_options to create_users, this is a better capatibily to this plugin
481
+
482
+ = 1.7.5 =
483
+ * Bug solved when opening tabs, it were opened in incorrect target
484
+ * Documentation for WooCommerce integration included
485
+
486
+ = 1.7.4 =
487
+ * Bug solved when saving path to file in Cron Import (thanks to Robert Zantow for reporting)
488
+ * New tabs included: Shop and Need help
489
+ * Banner background from WordPress.org updated
490
+
491
+ = 1.7.3 =
492
+ * Users which are not administrator now can edit his extra fields thanks to downka (https://wordpress.org/support/topic/unable-to-edit-imported-custom-profile-fields?replies=1#post-7595520)
493
+
494
+ = 1.7.2 =
495
+ * Plugin is now compatible with WordPress Access Areas plugin (https://wordpress.org/plugins/wp-access-areas/) thanks to Herbert (http://remark.no/)
496
+ * Added some notes to clarify the proper working of the plugin.
497
+
498
+ = 1.7.1 =
499
+ * Bug solved. Thanks for reporting this bug: https://wordpress.org/support/topic/version-17-just-doesnt-work?replies=3#post-7538427
500
+
501
+ = 1.7 =
502
+ * New GUI based on tabs easier to use
503
+ * Thanks to Michael Lancey ( Mckenzie Chase Management, Inc. ) we can now provide all this new features:
504
+ * File can now be refered using a path and not only uploading.
505
+ * You can now create a scheduled event to import users regularly.
506
+
507
+ = 1.6.4 =
508
+ * Bugs detected and solved thanks to a message from Periu Lane and others users, the problem was a var bad named.
509
+
510
+ = 1.6.3 =
511
+ * Default action for empty values now is: leave old value, in this way we prevent unintentional deletions of meta data.
512
+ * Included donate link in plugin.
513
+
514
+ = 1.6.2 =
515
+ * Thanks to Carmine Morra (carminemorra.com) for reporting problems with <p> and <br/> tags in body of emails.
516
+
517
+ = 1.6.1 =
518
+ * Thanks to Matthijs Mons: now this plugin is able to work with Allow Multiple Accounts (https://wordpress.org/plugins/allow-multiple-accounts/) and allow the possibility of register/update users with same email instead as using thme in this case as a secondary reference to the user as the username.
519
+
520
+ = 1.6 =
521
+ * Now options that are only useful if some other plugin is activated, they will only show when those plugins were activated
522
+ * Thanks to Carmine Morra (carminemorra.com) for supporting the next two big features:
523
+ * New role manager: instead of using a select list, you can choose roles now using checkboxes and you can choose more than one role per user
524
+ * SMTP server: you can send now from your WordPress directly or using a external SMTP server (almost all SMTP config and SMTP sending logic are based in the original one from WP Mail SMTP - https://wordpress.org/plugins/wp-mail-smtp/). When the plugin finish sending mail, reset the phpmailer to his previous state, so it won't break another SMTP mail plugin.
525
+ * And this little one, you can use **email** in mail body to send to users their email (as it existed before: **loginurl**, **username**, **password**)
526
+
527
+ = 1.5.2 =
528
+ * Thanks to idealien, if we use username to update users, the email can be updated as the rest of the data and metadata of the user and we silence the email changing message generated by core.
529
+
530
+ = 1.5.1 =
531
+ * Thanks to Mitch ( mitch AT themilkmob DOT org ) for reporting the bug, now headers do not appears twice.
532
+
533
+ = 1.5 =
534
+ * Thanks to Adam Hunkapiller ( of dreambridgepartners.com ) have supported all this new functionalities.
535
+ * You can choose the mail from and the from name of the mail sent.
536
+ * Mail from, from name, mail subject and mail body are now saved in the system and reused anytime you used the plugin in order to make the mail sent easier.
537
+ * You can include all this fields in the mail: "user_nicename", "user_url", "display_name", "nickname", "first_name", "last_name", "description", "jabber", "aim", "yim", "user_registered" if you used it in the CSV and you indicate it the mail body in this way **FIELD_NAME**, for example: **first_name**
538
+
539
+ = 1.4.2 =
540
+ * Due to some support threads, we have add a different background-color and color in rows that are problematic: the email was found in the system but the username is not the same
541
+
542
+ = 1.4.1 =
543
+ * Thanks to Peri Lane for supporting the new functionality which make possible to activate users at the same time they are being importing. Activate users as WP Members plugin (https://wordpress.org/plugins/wp-members/) consider a user is activated
544
+
545
+ = 1.4 =
546
+ * Thanks to Kristopher Hutchison we have add an option to choose what you want to do with empty cells: 1) delete the meta-data or 2) ignore it and do not update, previous to this version, the plugin update the value to empty string
547
+
548
+ = 1.3.9.4 =
549
+ * Previous version does not appear as updated in repository, with this version we try to fix it
550
+
551
+ = 1.3.9.3 =
552
+ * In WordPress Network, admins can now use the plugin and not only superadmins. Thanks to @jephperro
553
+
554
+ = 1.3.9.2 =
555
+ * Solved some typos. Thanks to Jonathan Lampe
556
+
557
+ = 1.3.9.1 =
558
+ * JS bug fixed, thanks to Jess C
559
+
560
+ = 1.3.9 =
561
+ * List of old CSV files created in order to prevent security problems.
562
+ * Created a button to delete this files directly in the plugin, you can delete one by one or you can do a bulk delete.
563
+
564
+ = 1.3.8 =
565
+ * Fixed a problem with iterator in columns count. Thanks to alysko for their message: https://wordpress.org/support/topic/3rd-colums-ignored?replies=1
566
+
567
+ = 1.3.7 =
568
+ * After upload, CSV file is deleted in order to prevent security issues.
569
+
570
+ = 1.3.6 =
571
+ * Thanks to idealien for telling us that we should check also if user exist using email (in addition to user login). Now we do this double check to prevent problems with users that exists but was registered using another user login. In the table we show this difference, the login is not changed, but all the rest of data is updated.
572
+
573
+ = 1.3.5 =
574
+ * Bug in image fixed
575
+ * Title changed
576
+
577
+ = 1.3.4 =
578
+ * Warning with sends_mail parameter fixed
579
+ * Button to donate included
580
+
581
+ = 1.3.3 =
582
+ * Screenshot updated, now it has the correct format. Thank to gmsb for telling us the problem with screenshout outdated
583
+
584
+ = 1.3.2 =
585
+ * Thanks to @jRausell for solving a bug with a count and an array
586
+
587
+ = 1.3.1 =
588
+ * WooCommerce fields integration into profile
589
+ * Duplicate fields detection into profile
590
+ * Thanks to @derwentx to give us the code to make possible to include this new features
591
+
592
+ = 1.3 =
593
+ * This is the biggest update in the history of this plugin: mails and passwords generation have been added.
594
+ * Thanks to @jRausell to give us code to start with mail sending functionality. We have improved it and now it is available for everyone.
595
+ * Mails are customizable and you can choose
596
+ * Passwords are also generated, please read carefully the documentation in order to avoid passwords lost in user updates.
597
+
598
+ = 1.2.3 =
599
+ * Extra format check done at the start of each row.
600
+
601
+ = 1.2.2 =
602
+ * Thanks to twmoore3rd we have created a system to detect email collisions, username collision are not detected because plugin update metadata in this case
603
+
604
+ = 1.2.1 =
605
+ * Thanks to Graham May we have fixed a problem when meta keys have a blank space and also we have improved plugin security using filter_input() and filter_input_array() functions instead of $_POSTs
606
+
607
+ = 1.2 =
608
+ * From this version, plugin can both insert new users and update new ones. Thanks to Nick Gallop from Weston Graphics.
609
+
610
+ = 1.1.8 =
611
+ * Donation button added.
612
+
613
+ = 1.1.7 =
614
+ * Fixed problems with \n, \r and \n\r inside CSV fields. Thanks to Ted Stresen-Reuter for his help. We have changed our way to parse CSV files, now we use SplFileObject and we can solve this problem.
615
+
616
+ = 1.2 =
617
+ * From this version, plugin can both insert new users and update new ones. Thanks to Nick Gallop from Weston Graphics.
618
+
619
+ = 1.1.8 =
620
+ * Donation button added.
621
+
622
+ = 1.1.7 =
623
+ * Fixed problems with \n, \r and \n\r inside CSV fields. Thanks to Ted Stresen-Reuter for his help. We have changed our way to parse CSV files, now we use SplFileObject and we can solve this problem.
624
+
625
+ = 1.1.6 =
626
+ * You can import now user_registered but always in the correct format Y-m-d H:i:s
627
+
628
+ = 1.1.5 =
629
+ * Now plugins is only shown to admins. Thanks to flegmatiq and his message https://wordpress.org/support/topic/the-plugin-name-apears-in-dashboard-menu-of-non-aministrators?replies=1#post-6126743
630
+
631
+ = 1.1.4 =
632
+ * Problem solved appeared in 1.1.3: sometimes array was not correctly managed.
633
+
634
+ = 1.1.3 =
635
+ * As fgetscsv() have problems with non UTF8 characters we changed it and now we had problems with commas inside fields, so we have rewritten it using str_getcsv() and declaring the function in case your current PHP version doesn't support it.
636
+
637
+ = 1.1.2 =
638
+ * fgetscsv() have problems with non UTF8 characters, so we have changed it for fgetcsv() thanks to a hebrew user who had problems.
639
+
640
+ = 1.1.1 =
641
+ * Some bugs found and solved managing custom columns after 1.1.0 upgrade.
642
+ * If you have problems/bugs about custom headers, you should deactivate the plugin and then activate it and upload a CSV file with the correct headers again in order to solve some problems.
643
+
644
+ = 1.1.0 =
645
+ * WordPress user profile default info is now saved correctly, the new fields are: "user_nicename", "user_url", "display_name", "nickname", "first_name", "last_name", "description", "jabber", "aim" and "yim"
646
+ * New CSV example created.
647
+ * Documentation adapted to new functionality.
648
+
649
+ = 1.0.9 =
650
+ * Bug with some UTF-8 strings, fixed.
651
+
652
+ = 1.0.8 =
653
+ * The list of roles is generated reading all the roles avaible in the system, instead of being the default always.
654
+
655
+ = 1.0.7 =
656
+ * Issue: admin/super_admin change role when file is too large. Two checks done to avoid it.
657
+
658
+ = 1.0.6 =
659
+ * Issue: Problems detecting extension solved (array('csv' => 'text/csv') added)
660
+
661
+ = 1.0.5 =
662
+ * Issue: Existing users role change, fixed
663
+
664
+ = 1.0.0 =
665
+ * First release
666
+
667
+ == Upgrade Notice ==
668
+
669
+ = 1.0 =
670
+ * First installation
671
+
672
+ == Frequently Asked Questions ==
673
+
674
+ = Columns position =
675
+
676
+ You should fill the first two columns with the next values: Username, Email.
677
+
678
+ The next columns are totally customizable and you can use whatever you want. All rows must contains same columns. User profile will be adapted to the kind of data you have selected. If you want to disable the extra profile information, please deactivate this plugin after make the import.
679
+
680
+ = id column =
681
+
682
+ You can use a column called id in order to make inserts or updates of an user using the ID used by WordPress in the wp_users table. We have two different cases:
683
+
684
+ * If id doesn't exist in your users table: WordPress core does not allow us insert it, so it will throw an error of kind: invalid_user_id
685
+ * If id exists: plugin check if username is the same, if yes, it will update the data, if not, it ignores the cell to avoid problems
686
+
687
+ = Passwords =
688
+
689
+ We can use a column called "Password" to manage a string that contains user passwords. We have different options for this case:
690
+
691
+ * If you don't create a column for passwords: passwords will be generated automatically
692
+ * If you create a column for passwords: if cell is empty, password won't be updated; if cell has a value, it will be used
693
+
694
+ = Serialized data =
695
+
696
+ Plugin can import serialized data. You have to use the serialized string directly in the CSV cell in order the plugin will be able to understand it as an serialized data instead as any other string.
697
+
698
+ = Lists =
699
+
700
+ Plugin can import lists as an array. Use this separator: :: two colons, inside the cell in order to split the string in a list of items.
701
+
702
+ = WordPress default profile data =
703
+
704
+ You can use those labels if you want to set data adapted to the WordPress default user columns (the ones who use the function wp_update_user)
705
+
706
+ * user_nicename: A string that contains a URL-friendly name for the user. The default is the user's username.
707
+ * user_url: A string containing the user's URL for the user's web site.
708
+ * display_name: A string that will be shown on the site. Defaults to user's username. It is likely that you will want to change this, for both appearance and security through * obscurity (that is if you don't use and delete the default admin user).
709
+ * nickname: The user's nickname, defaults to the user's username.
710
+ * first_name: The user's first name.
711
+ * last_name: The user's last name.
712
+ * description: A string containing content about the user.
713
+ * jabber: User's Jabber account.
714
+ * aim: User's AOL IM account.
715
+ * yim: User's Yahoo IM account.
716
+ * user_registered: Using the WordPress format for this kind of data Y-m-d H:i:s.
717
+
718
+ = Multiple imports =
719
+
720
+ You can upload as many files as you want, but all must have the same columns. If you upload another file, the columns will change to the form of last file uploaded.
721
+
722
+ = Free and premium support =
723
+
724
+ You can get:
725
+
726
+ * Free support [in WordPress forums](https://wordpress.org/support/plugin/import-users-from-csv-with-meta)
727
+ * Premium support [writing directly to contacto@codection.com](mailto:contacto@codection.com).
728
+
729
+ = Customizations, addons, develops... =
730
+ [Write us directly to contacto@codection.com](mailto:contacto@codection.com).
731
+
732
+ == Installation ==
733
+
734
+ ### **Installation**
735
+
736
+ * Install **Import users from CSV with meta** automatically through the WordPress Dashboard or by uploading the ZIP file in the _plugins_ directory.
737
+ * Then, after the package is uploaded and extracted, click&nbsp;_Activate Plugin_.
738
+
739
+ Now going through the points above, you should now see a new&nbsp;_Import users from CSV_&nbsp;menu item under Tool menu in the sidebar of the admin panel, see figure below of how it looks like.
740
+
741
+ [Plugin link from dashboard](http://ps.w.org/import-users-from-csv-with-meta/assets/screenshot-1.png)
742
+
743
+ If you get any error after following through the steps above please contact us through item support comments so we can get back to you with possible helps in installing the plugin and more.
744
+
745
+ Please read documentation before start using this plugin.
trunk/smtp.php ADDED
@@ -0,0 +1,310 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ /* Most part of this file is based in the original one wp_mail_smtp.php from the plugin WP Mail SMTP that you can find here https://wordpress.org/plugins/wp-mail-smtp/ */
6
+
7
+ global $acui_smtp_options;
8
+ $acui_smtp_options = array (
9
+ 'acui_settings' => 'wordpress',
10
+ 'acui_mail_from' => '',
11
+ 'acui_mail_from_name' => '',
12
+ 'acui_mailer' => 'smtp',
13
+ 'acui_mail_set_return_path' => 'false',
14
+ 'acui_smtp_host' => 'localhost',
15
+ 'acui_smtp_port' => '25',
16
+ 'acui_smtp_ssl' => 'none',
17
+ 'acui_smtp_auth' => false,
18
+ 'acui_smtp_user' => '',
19
+ 'acui_smtp_pass' => ''
20
+ );
21
+
22
+ function acui_smtp() {
23
+ global $acui_smtp_options, $phpmailer;
24
+
25
+ // Send a test mail if necessary
26
+ if( isset( $_POST['acui_smpt_action'] ) && $_POST['acui_smpt_action'] == __('Send Test', 'acui') && isset( $_POST['to'] ) ){
27
+ check_admin_referer('test-email');
28
+
29
+ if ( !is_object( $phpmailer ) || !is_a( $phpmailer, 'PHPMailer' ) ) {
30
+ require_once ABSPATH . WPINC . '/class-phpmailer.php';
31
+ require_once ABSPATH . WPINC . '/class-smtp.php';
32
+ $phpmailer = new PHPMailer( true );
33
+ }
34
+
35
+ add_action( 'phpmailer_init', 'acui_mailer_init' );
36
+
37
+ // Set up the mail variables
38
+ $to = $_POST['to'];
39
+ $subject = 'Import Users From CSV With Meta - Mail SMTP: ' . __('Test mail to ', 'acui') . $to;
40
+ $message = __('This is a test email generated by the Import User From CSV With Meta WordPress plugin.', 'acui');
41
+
42
+ // Set SMTPDebug to true
43
+ $phpmailer->SMTPDebug = true;
44
+
45
+ // Start output buffering to grab smtp debugging output
46
+ ob_start();
47
+
48
+ if( !get_option('acui_automatic_wordpress_email') ){
49
+ add_filter( 'send_email_change_email', '__return_false' );
50
+ add_filter( 'send_password_change_email', '__return_false' );
51
+ }
52
+
53
+ add_filter( 'wp_mail_from', 'acui_mail_from' );
54
+ add_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
55
+ add_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
56
+
57
+ $result = wp_mail( $to, $subject , $message );
58
+
59
+ remove_filter( 'wp_mail_from', 'acui_mail_from' );
60
+ remove_filter( 'wp_mail_from_name', 'acui_mail_from_name' );
61
+ remove_filter( 'wp_mail_content_type', 'cod_set_html_content_type' );
62
+
63
+ if( !get_option('acui_automatic_wordpress_email') ){
64
+ remove_filter( 'send_email_change_email', '__return_false' );
65
+ remove_filter( 'send_password_change_email', '__return_false' );
66
+ }
67
+
68
+ // Strip out the language strings which confuse users
69
+ //unset($phpmailer->language);
70
+ // This property became protected in WP 3.2
71
+
72
+ // Grab the smtp debugging output
73
+ $smtp_debug = ob_get_clean();
74
+ ?>
75
+ <div id="message" class="updated fade">
76
+ <?php if( $result ): ?>
77
+
78
+ <p><strong><?php _e('Message sent successfully', 'acui'); ?></strong></p>
79
+
80
+ <?php else: ?>
81
+
82
+ <p><strong><?php _e('Test Message Sent', 'acui'); ?></strong></p>
83
+ <p><?php _e('The result was:', 'acui'); ?></p>
84
+ <pre><?php var_dump( $result ); ?></pre>
85
+ <p><?php _e('The full debugging output is shown below:', 'acui'); ?></p>
86
+ <pre><?php var_dump( $phpmailer ); ?></pre>
87
+ <p><?php _e('The SMTP debugging output is shown below:', 'acui'); ?></p>
88
+ <pre><?php echo $smtp_debug ?></pre>
89
+
90
+ <?php endif; ?>
91
+ </div>
92
+
93
+ <?php
94
+ // Destroy $phpmailer so it doesn't cause issues later
95
+ unset($phpmailer);
96
+ remove_action( 'phpmailer_init', 'acui_mailer_init' );
97
+ }
98
+
99
+ if( isset( $_POST['acui_settings'] ) && !empty( $_POST['acui_settings'] ) ) {
100
+ check_admin_referer('email-config');
101
+
102
+ foreach ($acui_smtp_options as $name => $val) {
103
+ update_option( $name, $_POST[ $name ] );
104
+ }
105
+ }
106
+
107
+ // in version 1.8.7 we include this new option, we fill it in a smart way
108
+ if( get_option( "acui_settings" ) == "" ){
109
+ if( get_option( "acui_mail_from" ) == "" )
110
+ update_option( "acui_settings", "wordpress" );
111
+ else
112
+ update_option( "acui_settings", "plugin" );
113
+ }
114
+
115
+ ?>
116
+
117
+ <div class="wrap">
118
+ <h2><?php _e('Import User From CSV With Meta - SMTP server options', 'acui'); ?></h2>
119
+ <div style="background-color: red; color: white;">This feature is deprecated. Please use better a SMTP plugin from the repository specialized in this kind of configurations.</div>
120
+ <form method="post" action="" id="acui_smtp_options">
121
+ <?php wp_nonce_field('email-config'); ?>
122
+
123
+ <h3><?php _e('Global options', 'acui'); ?></h3>
124
+ <p><?php _e('Do you want to use your own SMTP settings for this plugin or the WordPress settings.', 'acui'); ?></p>
125
+
126
+ <table class="optiontable form-table">
127
+ <tr valign="top">
128
+ <th scope="row"><?php _e('Settings', 'acui'); ?> </th>
129
+ <td>
130
+ <fieldset>
131
+ <legend class="screen-reader-text"><span><?php _e('Use plugin SMTP settings', 'acui'); ?></span></legend>
132
+ <p><input id="acui_settings_plugin" type="radio" name="acui_settings" value="plugin" <?php checked('plugin', get_option('acui_settings')); ?> />
133
+ <label for="acui_settings"><?php _e('Use this settings to send mail.', 'acui'); ?></label></p>
134
+ <p><input id="acui_settings_wordpress" type="radio" name="acui_settings" value="wordpress" <?php checked('wordpress', get_option('acui_settings')); ?> />
135
+ <label for="acui_settings"><?php _e('Use WordPress general settings to send mail.', 'acui'); ?></label></p>
136
+ </fieldset>
137
+ </td>
138
+ </tr>
139
+ </table>
140
+
141
+ <table class="optiontable form-table">
142
+ <tr valign="top">
143
+ <th scope="row"><label for="mail_from"><?php _e('From Email', 'acui'); ?></label></th>
144
+ <td><input name="acui_mail_from" type="text" id="acui_mail_from" value="<?php print(get_option('acui_mail_from')); ?>" size="40" class="regular-text" />
145
+ <span class="description"><?php _e('You can specify the email address that emails should be sent from. If you leave this blank, the default email will be used.', 'acui'); if(get_option('db_version') < 6124) { print('<br /><span style="color: red;">'); _e('<strong>Please Note:</strong> You appear to be using a version of WordPress prior to 2.3. Please ignore the From Name field and instead enter Name&lt;email@domain.com&gt; in this field.', 'acui'); print('</span>'); } ?></span></td>
146
+ </tr>
147
+ <tr valign="top">
148
+ <th scope="row"><label for="mail_from_name"><?php _e('From Name', 'acui'); ?></label></th>
149
+ <td><input name="acui_mail_from_name" type="text" id="acui_mail_from_name" value="<?php print(get_option('acui_mail_from_name')); ?>" size="40" class="regular-text" />
150
+ <span class="description"><?php _e('You can specify the name that emails should be sent from. If you leave this blank, the emails will be sent from WordPress.', 'acui'); ?></span></td>
151
+ </tr>
152
+ </table>
153
+
154
+ <table class="optiontable form-table">
155
+ <tr valign="top">
156
+ <th scope="row"><?php _e('Mailer', 'acui'); ?> </th>
157
+ <td>
158
+ <fieldset>
159
+ <legend class="screen-reader-text"><span><?php _e('Mailer', 'acui'); ?></span></legend>
160
+ <p><input id="acui_mailer_smtp" type="radio" name="acui_mailer" value="smtp" <?php checked('smtp', get_option('acui_mailer')); ?> />
161
+ <label for="mailer_smtp"><?php _e('Send emails of this plugin via SMTP.', 'acui'); ?></label></p>
162
+ <p><input id="acui_mailer_mail" type="radio" name="acui_mailer" value="mail" <?php checked('mail', get_option('acui_mailer')); ?> />
163
+ <label for="mailer_mail"><?php _e('Use the PHP mail() function to send emails.', 'acui'); ?></label></p>
164
+ </fieldset>
165
+ </td>
166
+ </tr>
167
+ </table>
168
+
169
+ <table class="optiontable form-table">
170
+ <tr valign="top">
171
+ <th scope="row"><?php _e('Return Path', 'acui'); ?> </th>
172
+ <td>
173
+ <fieldset>
174
+ <legend class="screen-reader-text"><span><?php _e('Return Path', 'acui'); ?></span></legend><label for="mail_set_return_path">
175
+ <input name="acui_mail_set_return_path" type="checkbox" id="acui_mail_set_return_path" value="true" <?php checked('true', get_option('acui_mail_set_return_path')); ?> />
176
+ <?php _e('Set the return-path to match the From Email'); ?></label>
177
+ </fieldset>
178
+ </td>
179
+ </tr>
180
+ </table>
181
+
182
+ <h3><?php _e('SMTP Options', 'acui'); ?></h3>
183
+ <p><?php _e('These options only apply if you have chosen to send mail by SMTP above.', 'acui'); ?></p>
184
+
185
+ <table class="optiontable form-table">
186
+ <tr valign="top">
187
+ <th scope="row"><label for="smtp_host"><?php _e('SMTP Host', 'acui'); ?></label></th>
188
+ <td><input name="acui_smtp_host" type="text" id="acui_smtp_host" value="<?php print(get_option('acui_smtp_host')); ?>" size="40" class="regular-text" /></td>
189
+ </tr>
190
+ <tr valign="top">
191
+ <th scope="row"><label for="smtp_port"><?php _e('SMTP Port', 'acui'); ?></label></th>
192
+ <td><input name="acui_smtp_port" type="text" id="acui_smtp_port" value="<?php print(get_option('acui_smtp_port')); ?>" size="6" class="regular-text" /></td>
193
+ </tr>
194
+ <tr valign="top">
195
+ <th scope="row"><?php _e('Encryption', 'acui'); ?> </th>
196
+ <td>
197
+ <fieldset>
198
+ <legend class="screen-reader-text"><span><?php _e('Encryption', 'acui'); ?></span></legend>
199
+ <input id="acui_smtp_ssl_none" type="radio" name="acui_smtp_ssl" value="none" <?php checked('none', get_option('acui_smtp_ssl')); ?> />
200
+ <label for="smtp_ssl_none"><span><?php _e('No encryption.', 'acui'); ?></span></label><br />
201
+ <input id="acui_smtp_ssl_ssl" type="radio" name="acui_smtp_ssl" value="ssl" <?php checked('ssl', get_option('acui_smtp_ssl')); ?> />
202
+ <label for="smtp_ssl_ssl"><span><?php _e('Use SSL encryption.', 'acui'); ?></span></label><br />
203
+ <input id="acui_smtp_ssl_tls" type="radio" name="acui_smtp_ssl" value="tls" <?php checked('tls', get_option('acui_smtp_ssl')); ?> />
204
+ <label for="smtp_ssl_tls"><span><?php _e('Use TLS encryption. This is not the same as STARTTLS. For most servers SSL is the recommended option.', 'acui'); ?></span></label>
205
+ </td>
206
+ </tr>
207
+ <tr valign="top">
208
+ <th scope="row"><?php _e('Authentication', 'acui'); ?> </th>
209
+ <td>
210
+ <input id="acui_smtp_auth_false" type="radio" name="acui_smtp_auth" value="false" <?php checked('false', get_option('acui_smtp_auth')); ?> />
211
+ <label for="smtp_auth_false"><span><?php _e('No: Do not use SMTP authentication.', 'acui'); ?></span></label><br />
212
+ <input id="acui_smtp_auth_true" type="radio" name="acui_smtp_auth" value="true" <?php checked('true', get_option('acui_smtp_auth')); ?> />
213
+ <label for="smtp_auth_true"><span><?php _e('Yes: Use SMTP authentication.', 'acui'); ?></span></label><br />
214
+ <span class="description"><?php _e('If this is set to no, the values below are ignored.', 'acui'); ?></span>
215
+ </td>
216
+ </tr>
217
+ <tr valign="top">
218
+ <th scope="row"><label for="smtp_user"><?php _e('Username', 'acui'); ?></label></th>
219
+ <td><input name="acui_smtp_user" type="text" id="acui_smtp_user" value="<?php print(get_option('acui_smtp_user')); ?>" size="40" class="code" /></td>
220
+ </tr>
221
+ <tr valign="top">
222
+ <th scope="row"><label for="smtp_pass"><?php _e('Password', 'acui'); ?></label></th>
223
+ <td><input name="acui_smtp_pass" type="password" id="acui_smtp_pass" value="<?php print(get_option('acui_smtp_pass')); ?>" size="40" class="code" /></td>
224
+ </tr>
225
+ </table>
226
+
227
+ <p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="<?php _e('Save Changes'); ?>" /></p>
228
+ </form>
229
+
230
+ <h3><?php _e('Send a Test Email', 'acui'); ?></h3>
231
+
232
+ <form method="POST" action="">
233
+ <?php wp_nonce_field('test-email'); ?>
234
+ <table class="optiontable form-table">
235
+ <tr valign="top">
236
+ <th scope="row"><label for="to"><?php _e('To:', 'acui'); ?></label></th>
237
+ <td><input name="to" type="text" id="to" value="" size="40" class="code" />
238
+ <span class="description"><?php _e('Type an email address here and then click Send Test to generate a test email.', 'acui'); ?></span></td>
239
+ </tr>
240
+ </table>
241
+ <p class="submit"><input type="submit" name="acui_smpt_action" id="acui_smpt_action" class="button-primary" value="<?php _e('Send Test', 'acui'); ?>" /></p>
242
+ </form>
243
+ </div>
244
+
245
+ <script>
246
+ jQuery( document ).ready( function( $ ){
247
+ $( "[name='acui_settings']" ).on('change', function() {
248
+ var selected = $( 'input[name=acui_settings]:checked' ).val();
249
+
250
+ if( selected == "wordpress" )
251
+ disableControls();
252
+ else
253
+ enableControls();
254
+ });
255
+
256
+ function disableControls(){
257
+ $("#acui_smtp_options :input").not(":input[type=submit],:input[type=hidden]").prop("disabled", true);
258
+ $("[name='acui_settings']").prop("disabled", false);
259
+ }
260
+
261
+ function enableControls(){
262
+ $("#acui_smtp_options :input").not(":input[type=submit],:input[type=hidden]").prop("disabled", false);
263
+ }
264
+
265
+ <?php if( get_option( "acui_settings" ) == "wordpress" ): ?>
266
+ disableControls();
267
+ <?php else: ?>
268
+ enableControls();
269
+ <?php endif; ?>
270
+ })
271
+ </script>
272
+
273
+ <?php
274
+ }
275
+
276
+ function acui_mailer_init( PHPMailer $phpmailer ){
277
+ if ( ! get_option('acui_mailer') || ( get_option('acui_mailer') == 'smtp' && ! get_option('acui_smtp_host') ) ) {
278
+ return;
279
+ }
280
+
281
+ // Set the mailer type as per config above, this overrides the already called isMail method
282
+ $phpmailer->Mailer = get_option('acui_mailer');
283
+
284
+ // Set the Sender (return-path) if required
285
+ if (get_option('acui_mail_set_return_path'))
286
+ $phpmailer->Sender = $phpmailer->From;
287
+
288
+ // Set the SMTPSecure value, if set to none, leave this blank
289
+ $phpmailer->SMTPSecure = get_option('acui_smtp_ssl') == 'none' ? '' : get_option('acui_smtp_ssl');
290
+
291
+ // If we're sending via SMTP, set the host
292
+ if (get_option('acui_mailer') == "smtp") {
293
+
294
+ // Set the SMTPSecure value, if set to none, leave this blank
295
+ $phpmailer->SMTPSecure = get_option('acui_smtp_ssl') == 'none' ? '' : get_option('acui_smtp_ssl');
296
+
297
+ // Set the other options
298
+ $phpmailer->Host = get_option('acui_smtp_host');
299
+ $phpmailer->Port = get_option('acui_smtp_port');
300
+
301
+ // If we're using smtp auth, set the username & password
302
+ if (get_option('acui_smtp_auth') == "true") {
303
+ $phpmailer->SMTPAuth = TRUE;
304
+ $phpmailer->Username = get_option('acui_smtp_user');
305
+ $phpmailer->Password = get_option('acui_smtp_pass');
306
+ }
307
+ }
308
+
309
+ $phpmailer = apply_filters('acui_smtp_custom_options', $phpmailer);
310
+ }
trunk/test.csv ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ Username,Email,Password,Address,City,State,Zip code,Country,user_url
2
+ john,john@mymail.com,mypassword,Rd. Victoria,Atlanta,Georgia,1201,USA,
3
+ javier,javier@micorreo.com,pass,Av. Cervantes,C�rdoba,C�rdoba,14004,Espa�a,http://www.linuxhispano.net
4
+ elissa,eliss@mymail.com,elis2013,Verona,Ferrara,Ferrara,89891,Italia,
5
+ piere,mon@mon.fr,passwordfrance,Nation,Par�s,�le de la Cit�,28280,France,
6
+ peter,pet@me.com,passpass,National,Washington,Columbia,2001,USA,
7
+ luis,luisperez@correo.es,contrasenna,Sol,Madrid,Madrid,28005,Spain,
8
+ eleonora,eleonora@me.it,barele,Spagna,Roma,Roma,10101,Italia,
trunk/wpml-config.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <wpml-config>
2
+ <admin-texts>
3
+ <key name="acui_mail_subject"/>
4
+ <key name="acui_mail_body"/>
5
+ </admin-texts>
6
+ <custom-types>
7
+ <custom-type translate="1">acui_email_template</custom-type>
8
+ </custom-types>
9
+ </wpml-config>