Changeset 6477 for trunk/wp-admin/import/wordpress.php
- Timestamp:
- 12/24/2007 06:20:34 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/import/wordpress.php
r6472 r6477 10 10 var $newauthornames = array (); 11 11 var $allauthornames = array (); 12 13 var $author_ids = array (); 14 12 15 var $j = -1; 13 16 var $fetch_attachments = false; … … 45 48 } 46 49 47 function users_form($n) { 48 global $wpdb, $testing; 49 $users = $wpdb->get_results("SELECT user_login FROM $wpdb->users ORDER BY user_login"); 50 ?><select name="userselect[<?php echo $n; ?>]"> 51 <option value="#NONE#">- Select -</option> 52 <?php 53 foreach ($users as $user) { 54 echo '<option value="'.$user->user_login.'">'.$user->user_login.'</option>'; 55 } 56 ?> 57 </select> 58 <?php 59 } 60 61 //function to check the authorname and do the mapping 62 function checkauthor($author) { 63 global $wpdb; 64 //mtnames is an array with the names in the mt import file 65 $pass = 'changeme'; 66 if (!(in_array($author, $this->mtnames))) { //a new mt author name is found 67 ++ $this->j; 68 $this->mtnames[$this->j] = $author; //add that new mt author name to an array 69 $user_id = username_exists($this->newauthornames[$this->j]); //check if the new author name defined by the user is a pre-existing wp user 70 if (!$user_id) { //banging my head against the desk now. 71 if ($this->newauthornames[$this->j] == 'left_blank') { //check if the user does not want to change the authorname 72 $user_id = wp_create_user($author, $pass); 73 $this->newauthornames[$this->j] = $author; //now we have a name, in the place of left_blank. 74 } else { 75 $user_id = wp_create_user($this->newauthornames[$this->j], $pass); 76 } 77 } else { 78 return $user_id; // return pre-existing wp username if it exists 79 } 80 } else { 81 $key = array_search($author, $this->mtnames); //find the array key for $author in the $mtnames array 82 $user_id = username_exists($this->newauthornames[$key]); //use that key to get the value of the author's name from $newauthornames 83 } 84 85 return $user_id; 50 function has_gzip() { 51 return is_callable('gzopen'); 52 } 53 54 function fopen($filename, $mode='r') { 55 if ( $this->has_gzip() ) 56 return gzopen($filename, $mode); 57 return fopen($filename, $mode); 58 } 59 60 function feof($fp) { 61 if ( $this->has_gzip() ) 62 return gzeof($fp); 63 return feof($fp); 64 } 65 66 function fgets($fp, $len=8192) { 67 if ( $this->has_gzip() ) 68 return gzgets($fp, $len); 69 return fgets($fp, $len); 70 } 71 72 function fclose($fp) { 73 if ( $this->has_gzip() ) 74 return gzclose($fp); 75 return fclose($fp); 86 76 } 87 77 … … 90 80 91 81 $doing_entry = false; 92 93 $fp = fopen($this->file, 'r'); 82 $is_wxr_file = false; 83 84 $fp = $this->fopen($this->file, 'r'); 94 85 if ($fp) { 95 while ( !feof($fp) ) { 96 $importline = rtrim(fgets($fp)); 86 while ( !$this->feof($fp) ) { 87 $importline = rtrim($this->fgets($fp)); 88 89 // this doesn't check that the file is perfectly valid but will at least confirm that it's not the wrong format altogether 90 if ( !$is_wxr_file && preg_match('|xmlns:wp="http://wordpress[.]org/export/\d+[.]\d+/"|', $importline) ) 91 $is_wxr_file = true; 97 92 98 93 if ( false !== strpos($importline, '<wp:category>') ) { … … 123 118 } 124 119 125 fclose($fp); 126 } 127 120 $this->fclose($fp); 121 } 122 123 return $is_wxr_file; 128 124 129 125 } 130 126 131 127 function get_wp_authors() { 132 $this->get_entries(array(&$this, 'process_author'));133 134 128 // We need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting. 135 129 $temp = $this->allauthornames; … … 146 140 147 141 function get_authors_from_post() { 148 $formnames = array (); 149 $selectnames = array (); 150 151 foreach ($_POST['user'] as $key => $line) { 152 $newname = trim(stripslashes($line)); 153 if ($newname == '') 154 $newname = 'left_blank'; //passing author names from step 1 to step 2 is accomplished by using POST. left_blank denotes an empty entry in the form. 155 array_push($formnames, "$newname"); 156 } // $formnames is the array with the form entered names 157 158 foreach ($_POST['userselect'] as $user => $key) { 159 $selected = trim(stripslashes($key)); 160 array_push($selectnames, "$selected"); 161 } 162 163 $count = count($formnames); 164 for ($i = 0; $i < $count; $i ++) { 165 if ($selectnames[$i] != '#NONE#') { //if no name was selected from the select menu, use the name entered in the form 166 array_push($this->newauthornames, "$selectnames[$i]"); 167 } else { 168 array_push($this->newauthornames, "$formnames[$i]"); 142 global $current_user; 143 144 // this will populate $this->author_ids with a list of author_names => user_ids 145 146 foreach ( $_POST['author_in'] as $i => $in_author_name ) { 147 148 if ( !empty($_POST['user_select'][$i]) ) { 149 // an existing user was selected in the dropdown list 150 $user = get_userdata( intval($_POST['user_select'][$i]) ); 151 if ( isset($user->ID) ) 152 $this->author_ids[$in_author_name] = $user->ID; 153 } 154 elseif ( $this->allow_create_users() ) { 155 // nothing was selected in the dropdown list, so we'll use the name in the text field 156 157 $new_author_name = trim($_POST['user_create'][$i]); 158 // if the user didn't enter a name, assume they want to use the same name as in the import file 159 if ( empty($new_author_name) ) 160 $new_author_name = $in_author_name; 161 162 $user_id = username_exists($new_author_name); 163 if ( !$user_id ) { 164 $user_id = wp_create_user($new_author_name, 'changeme'); 165 } 166 167 $this->author_ids[$in_author_name] = $user_id; 168 } 169 170 // failsafe: if the user_id was invalid, default to the current user 171 if ( empty($this->author_ids[$in_author_name]) ) { 172 $this->author_ids[$in_author_name] = intval($current_user->ID); 169 173 } 170 174 } … … 176 180 <h2><?php _e('Assign Authors'); ?></h2> 177 181 <p><?php _e('To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as <code>admin</code>s entries.'); ?></p> 178 <p><?php _e('If a new user is created by WordPress, the password will be set, by default, to "changeme". Quite suggestive, eh? ;)'); ?></p> 179 <?php 182 <?php 183 if ( $this->allow_create_users() ) { 184 echo '<p>'.__('If a new user is created by WordPress, the password will be set, by default, to "changeme". Quite suggestive, eh? ;)')."</p>\n"; 185 } 180 186 181 187 … … 187 193 foreach ($authors as $author) { 188 194 ++ $j; 189 echo '<li>'.__(' Current author:').' <strong>'.$author.'</strong><br />'.sprintf(__('Create user %1$s or map to existing'), ' <input type="text" value="'.$author.'" name="'.'user[]'.'" maxlength="30"> <br />');190 $this->users_form($j );195 echo '<li>'.__('Import author:').' <strong>'.$author.'</strong><br />'; 196 $this->users_form($j, $author); 191 197 echo '</li>'; 192 198 } 199 200 if ( $this->allow_fetch_attachments() ) { 193 201 ?> 194 202 </ol> … … 200 208 201 209 <?php 210 } 211 202 212 echo '<input type="submit" value="Submit">'.'<br />'; 203 213 echo '</form>'; 204 214 205 215 } 216 217 function users_form($n, $author) { 218 219 if ( $this->allow_create_users() ) { 220 printf(__('Create user %1$s or map to existing'), ' <input type="text" value="'.$author.'" name="'.'user_create['.intval($n).']'.'" maxlength="30"> <br />'); 221 } 222 else { 223 echo __('Map to existing').'<br />'; 224 } 225 226 // keep track of $n => $author name 227 echo '<input type="hidden" name="author_in['.intval($n).']" value="'.htmlspecialchars($author).'" />'; 228 229 $users = get_users_of_blog(); 230 ?><select name="user_select[<?php echo $n; ?>]"> 231 <option value="0">- Select -</option> 232 <?php 233 foreach ($users as $user) { 234 echo '<option value="'.$user->user_id.'">'.$user->user_login.'</option>'; 235 } 236 ?> 237 </select> 238 <?php 239 } 206 240 207 241 function select_authors() { 208 $this->get_entries(array(&$this, 'process_author')); 209 $this->wp_authors_form(); 210 } 242 $is_wxr_file = $this->get_entries(array(&$this, 'process_author')); 243 if ( $is_wxr_file ) { 244 $this->wp_authors_form(); 245 } 246 else { 247 echo '<h2>'.__('Invalid file').'</h2>'; 248 echo '<p>'.__('Please upload a valid WXR (WordPress eXtended RSS) export file.').'</p>'; 249 } 250 } 251 252 // fetch the user ID for a given author name, respecting the mapping preferences 253 function checkauthor($author) { 254 global $current_user; 255 256 if ( !empty($this->author_ids[$author]) ) 257 return $this->author_ids[$author]; 258 259 // failsafe: map to the current user 260 return $current_user->ID; 261 } 262 263 211 264 212 265 function process_categories() { … … 516 569 517 570 // make sure the fetch was successful 518 if ( $headers['response'] != '200' ) 519 return new WP_Error( 'import_file_error', __(sprintf('Remote file returned error response %d', intval($headers['response']))) ); 520 elseif ( isset($headers['content-length']) && filesize($upload['file']) != $headers['content-length'] ) 571 if ( $headers['response'] != '200' ) { 572 @unlink($upload['file']); 573 return new WP_Error( 'import_file_error', sprintf(__('Remote file returned error response %d'), intval($headers['response'])) ); 574 } 575 elseif ( isset($headers['content-length']) && filesize($upload['file']) != $headers['content-length'] ) { 576 @unlink($upload['file']); 521 577 return new WP_Error( 'import_file_error', __('Remote file is incorrect size') ); 578 } 579 580 $max_size = $this->max_attachment_size(); 581 if ( !empty($max_size) and filesize($upload['file']) > $max_size ) { 582 @unlink($upload['file']); 583 return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', size_format($max_size))) ); 584 } 522 585 523 586 // keep track of the old and new urls so we can substitute them later … … 571 634 } 572 635 636 // give the user the option of creating new users to represent authors in the import file? 637 function allow_create_users() { 638 return apply_filters('import_allow_create_users', true); 639 } 640 641 // give the user the option of downloading and importing attached files 642 function allow_fetch_attachments() { 643 return apply_filters('import_allow_fetch_attachments', true); 644 } 645 646 function max_attachment_size() { 647 // can be overridden with a filter - 0 means no limit 648 return apply_filters('import_attachment_size_limit', 0); 649 } 650 651 573 652 function import($id, $fetch_attachments = false) { 574 653 $this->id = (int) $id; 575 $this->fetch_attachments = ( bool) $fetch_attachments;654 $this->fetch_attachments = ($this->allow_fetch_attachments() && (bool) $fetch_attachments); 576 655 577 656 add_filter('import_post_meta_key', array($this, 'is_valid_meta_key')); 657 do_action('import_start'); 578 658 $file = get_attached_file($this->id); 579 659 $this->import_file($file); 660 do_action('import_end'); 580 661 } 581 662
Note: See TracChangeset
for help on using the changeset viewer.