X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/80b7979fccf09a75af3f4c111fa27060ae6dbf85..11be15bd505d66a91e2c80062190b13e315a04a9:/wp-admin/import.php diff --git a/wp-admin/import.php b/wp-admin/import.php index a9de2654..72b9142f 100644 --- a/wp-admin/import.php +++ b/wp-admin/import.php @@ -29,22 +29,19 @@ get_current_screen()->set_help_sidebar( '

' . __('Support Forums') . '

' ); -$popular_importers = array(); -if ( current_user_can('install_plugins') ) - $popular_importers = array( - 'blogger' => array( __('Blogger'), __('Install the Blogger importer to import posts, comments, and users from a Blogger blog.'), 'install' ), - 'wpcat2tag' => array(__('Categories and Tags Converter'), __('Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.'), 'install', 'wp-cat2tag' ), - 'livejournal' => array( __( 'LiveJournal' ), __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ), 'install' ), - 'movabletype' => array( __('Movable Type and TypePad'), __('Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.'), 'install', 'mt' ), - 'opml' => array( __('Blogroll'), __('Install the blogroll importer to import links in OPML format.'), 'install' ), - 'rss' => array( __('RSS'), __('Install the RSS importer to import posts from an RSS feed.'), 'install' ), - 'tumblr' => array( __('Tumblr'), __('Install the Tumblr importer to import posts & media from Tumblr using their API.'), 'install' ), - 'wordpress' => array( 'WordPress', __('Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'), 'install' ) - ); - -if ( ! empty( $_GET['invalid'] ) && !empty($popular_importers[$_GET['invalid']][3]) ) { - wp_redirect( admin_url('import.php?import=' . $popular_importers[$_GET['invalid']][3]) ); - exit; +if ( current_user_can( 'install_plugins' ) ) + $popular_importers = wp_get_popular_importers(); +else + $popular_importers = array(); + +// Detect and redirect invalid importers like 'movabletype', which is registered as 'mt' +if ( ! empty( $_GET['invalid'] ) && isset( $popular_importers[ $_GET['invalid'] ] ) ) { + $importer_id = $popular_importers[ $_GET['invalid'] ]['importer-id']; + if ( $importer_id != $_GET['invalid'] ) { // Prevent redirect loops. + wp_redirect( admin_url( 'admin.php?import=' . $importer_id ) ); + exit; + } + unset( $importer_id ); } add_thickbox(); @@ -68,28 +65,26 @@ $importers = get_importers(); // If a popular importer is not registered, create a dummy registration that links to the plugin installer. foreach ( $popular_importers as $pop_importer => $pop_data ) { - if ( isset( $importers[$pop_importer] ) ) + if ( isset( $importers[ $pop_importer ] ) ) continue; - if ( isset( $pop_data[3] ) && isset( $importers[ $pop_data[3] ] ) ) + if ( isset( $importers[ $pop_data['importer-id'] ] ) ) continue; - - $importers[$pop_importer] = $popular_importers[$pop_importer]; + $importers[ $pop_data['importer-id'] ] = array( $pop_data['name'], $pop_data['description'], 'install' => $pop_data['plugin-slug'] ); } -if ( empty($importers) ) { - echo '

'.__('No importers are available.').'

'; // TODO: make more helpful +if ( empty( $importers ) ) { + echo '

' . __('No importers are available.') . '

'; // TODO: make more helpful } else { - uasort($importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);')); + uasort($importers, create_function('$a, $b', 'return strnatcasecmp($a[0], $b[0]);')); ?> $data) { - $style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate'; + $alt = ''; + foreach ($importers as $importer_id => $data) { $action = ''; - if ( 'install' == $data[2] ) { - $plugin_slug = $id . '-importer'; + if ( isset( $data['install'] ) ) { + $plugin_slug = $data['install']; if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { // Looks like Importer is installed, But not active $plugins = get_plugins( '/' . $plugin_slug ); @@ -111,13 +106,12 @@ if ( empty($importers) ) { } } } else { - $action = "{$data[0]}"; + $action = "{$data[0]}"; } - if ($style != '') - $style = 'class="'.$style.'"'; + $alt = $alt ? '' : ' class="alternate"'; echo " - + ";
$action {$data[1]}