WordPress.org

Make WordPress Core

Ticket #8455: import-usability-preselect.diff

File import-usability-preselect.diff, 2.2 KB (added by tott, 9 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        }