WordPress.org

Make WordPress Core

Ticket #8455: import-usability-preselect.diff

File import-usability-preselect.diff, 2.2 KB (added by tott, 4 years ago)

current version of patch

  • wp-admin/import/wordpress.php

     
    239239 
    240240        } 
    241241 
     242   function suggest_user( $author_in, $users ) { 
     243        $shortest = -1; 
     244        $shortestavg = array(); 
     245 
     246        $threshold = floor( ( strlen( $author_in ) / 100 ) * 25 ); // 25 % of the strlen are valid 
     247        foreach ( $users as $user) { 
     248            $levs[] = levenshtein( $author_in, $user->display_name ); 
     249            $levs[] = levenshtein( $author_in, $user->user_login ); 
     250            arsort( $levs ); 
     251            $lev = array_pop( $levs ); 
     252            if ( 0 == $lev ) { 
     253                $closest = $user->user_id; 
     254                $shortest = 0; 
     255                break; 
     256            } 
     257             
     258            if ( ( $lev <= $shortest || $shortest < 0 ) && $lev <= $threshold ) { 
     259                $closest  = $user->user_id; 
     260                $shortest = $lev; 
     261            } 
     262 
     263            $shortestavg[] = $lev; 
     264 
     265        } 
     266 
     267        // in case all usernames have a common pattern 
     268        if ( $shortest > ( array_sum( $shortestavg ) / count( $shortestavg ) ) ) 
     269            return false; 
     270 
     271        return $closest;         
     272    } 
     273     
    242274        function users_form($n, $author) { 
    243275 
    244276                if ( $this->allow_create_users() ) { 
     
    252284                echo '<input type="hidden" name="author_in['.intval($n).']" value="'.htmlspecialchars($author).'" />'; 
    253285 
    254286                $users = get_users_of_blog(); 
    255 ?><select name="user_select[<?php echo $n; ?>]"> 
     287    ?> 
     288    <select name="user_select[<?php echo $n; ?>]"> 
    256289        <option value="0"><?php _e('- Select -'); ?></option> 
    257290        <?php 
    258                 foreach ($users as $user) { 
    259                         echo '<option value="'.$user->user_id.'">'.$user->user_login.'</option>'; 
     291        foreach ($users as $user) { 
     292            if ( $this->suggest_user( $author, $users ) == $user->user_id ) 
     293                $selected = ' selected="selected"'; 
     294            else 
     295                $selected = ''; 
     296                        echo '<option value="' . $user->user_id . '"'. $selected . '>' . $user->user_login . ' (' . $user->display_name . ') </option>'; 
    260297                } 
    261 ?> 
     298    ?> 
    262299        </select> 
    263300        <?php 
    264301        }