exportData(); } } private function toXMLItem($user){ echo("\tID}\">\n"); echo("\t\tuser_login}]]>\n"); /* * I should export Password too (as requested by user) */ if(isset($_GET['pwd'])) echo("user_pass}]]>\n"); echo("\t\tuser_nicename}]]>\n"); echo("\t\tuser_email}]]>\n"); echo("\t\tuser_url}]]>\n"); echo("\t\tuser_registered}]]>\n"); echo("\t\tuser_activation_key}]]>\n"); echo("\t\tuser_status}]]>\n"); echo("\t\tdisplay_name}]]>\n"); if(isset($_GET['metadata'])){ /* * I should export metadata (as requested by user) */ echo("\t\t"); $umeta = get_user_meta($user->ID); foreach($umeta as $key => $value){ echo("\t\t\t\n"); } echo("\t\t"); } echo("\t\n\n"); } public function exportData(){ if(isset($_GET['aeiou']) && $_GET['aeiou'] == 'export'){ $u = new WP_User_Query(array('fields' => 'all')); $users = $u->get_results(); /* * Make the XML but ensure it will be downloaded */ header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-type: application/xml; encoding=utf-8'); header("Content-Disposition: attachment; filename=aeiou_users.xml"); header("Content-Transfer-Encoding: binary"); echo("\n"); echo("\n\n"); echo("\n"); foreach($users as $user){ echo $this->toXMLItem($user); } echo(""); exit(); } } public function createPages(){ add_users_page("AEIOU - Panel", 'AEIOU', 'add_users', 'aeiou', array($this, 'thePage')); } public function thePage(){ global $wpdb; $screen = WP_Screen::get(); add_meta_box('div-export-options-' .$screen->id, __('Export Users', self::LANG_DOMAIN), array($this,'addExportMetabox'), $screen, 'normal', 'high'); add_meta_box('div-import-options' . $screen->id, __('Import Users', self::LANG_DOMAIN), array($this,'addImportMetabox'), $screen, 'normal', 'high'); wp_enqueue_script('post'); add_screen_option('layout_columns', array('max' => 1, 'default' => 1) ); global $wp_meta_boxes; ?>

consider a donation. ', self::LANG_DOMAIN); ?> a lunch.', self::LANG_DOMAIN), 'https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@tosend.it&item_name=Donation%20for%20AEIOU&item_number=1&amount=30%2e00¤cy_code=EUR' ); ?>

'all')); $userCount = $u->get_total() * 10; $amt = intval($userCount / 100); $dec = "00".($userCount % 100); $dec = substr($dec, -2); ?> 0,10 € (euro) per user could be the right ammount.', self::LANG_DOMAIN), "https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@tosend.it&item_name=Donation%20for%20AEIOU&item_number=1&amount=$amt%2e$dec¤cy_code=EUR") ; ?>

contact us for a consulting.', self::LANG_DOMAIN)?>

WordPress support forum for this plugin.', self::LANG_DOMAIN), 'http://wordpress.org/support/plugin/aeiou'); ?>

AUTH_KEY, SECURE_AUTH_KEY LOGGED_IN_KEY.

" />

found with the same username):', self::LANG_DOMAIN)?>




" />

decodeFileError($theFile['error']);
						}else{
							/*
							 * Starting import
							 */
							_e('Import started.', self::LANG_DOMAIN); echo "\n\n";
							_e('Please do not refresh the page and not go anywhere.'); echo "\n";
							_e('Interruption of page execution could cause data loss and user table to break!'); echo "\n"; 
							$parser = new AEIOU_Parser_SimpleXML();
							$users = $parser->parse($theFile['tmp_name']);
							
							$exists = isset($_POST['exists'])?$_POST['exists']:'skip';
							
							foreach($users as $user){
								$login = $user['user_login'];
								echo("\n$login ");
								$usr = get_user_by('login', $login);
								
								$userID = 0;
								
								$userMeta = (isset($user['metadata'])) ? $user['metadata'] : array();
								if(isset($user['metadata'])) unset($user['metadata']);
								
								if($usr && $exists != 'skip'){
									$usr = (array) $usr->data;
									
									if($exists == 'update'){
										
										/*
										 * Keeping metadata and removing from array
										 */
										
										foreach($user as $key => $value){
											/*
											 * Removing all non empty key from import
											 */
											if(isset($usr[$key]) && !empty($usr[$key])){
												unset($user[$key]);
											}
										}
									}
									
									if(count($user)>0){
										$changes = array_keys($user);
										$changes = "".implode(",", $changes)."";
										
										echo sprintf(__("has new %s value(s).", self::LANG_DOMAIN),$changes) . "\n";
										$user['ID'] = $usr['ID'];
										wp_update_user($user);
									}else{
										_e("unchanged.", self::LANG_DOMAIN) . "\n";
									}
									$userID = $user['ID'];
									
								}else{
								
									if(!$usr){
										/*
										 * New User must be created
										 */
										$userID = wp_insert_user($user);
										$user['ID'] = $userID;
										wp_update_user($user);
										echo sprintf(__("inserted with ID %d", self::LANG_DOMAIN),$userID) . "\n";
									}else{
										echo __("skipped due it's already in the database", self::LANG_DOMAIN) . "\n";
									}
										
								}
								if(isset($_POST['metadata']) && $userID != 0){
									
									/*
									 * Admin asked for metadata import
									*/

									$count = 0;
									foreach($userMeta as $key => $value){
										$metaKey = get_user_meta($userID, $key);
										
										if(empty($metaKey[0])) $metaKey = false;
										if(is_serialized($value)) $value = unserialize($value);
										if(!$metaKey || $exists=='replace'){
											delete_user_meta($userID, $key);
											if( !empty( $value ) ){

												$count+=1;
												if($verbose) echo sprintf(__("Metadata %s updated for user %s", self::LANG_DOMAIN), $key, $login) . "\n";

												
												update_user_meta($userID, $key, $value );
											}else{
												if($metaKey && $verbose) echo sprintf(__("Metadata %s removed for user %s", self::LANG_DOMAIN), $key, $login) . "\n";
											}
										}
									}
									if($count>0)
										echo sprintf(__("Updated %d metadatas for user %s", self::LANG_DOMAIN), $count, $login) . "\n";
									
								}
								
							}
							
						}
					}
				}
				?>