Index: class-wporg-themes-upload.php
===================================================================
--- class-wporg-themes-upload.php	(revision 8028)
+++ class-wporg-themes-upload.php	(working copy)
@@ -234,30 +234,54 @@ class WPORG_Themes_Upload {
 			/* translators: %s: parent theme */
 			return sprintf( __( 'There is no theme called %s in the directory. For child themes, you must use a parent theme that already exists in the directory.', 'wporg-themes' ),
 				'<code>' . $this->theme->parent() . '</code>'
 			);
 		}
 
 		// Is there already a theme with the name name by a different author?
 		if ( ! empty( $this->theme_post ) && $this->theme_post->post_author != $this->author->ID ) {
 			/* translators: 1: theme slug, 2: style.css */
 			return sprintf( __( 'There is already a theme called %1$s by a different author. Please change the name of your theme in %2$s and upload it again.', 'wporg-themes' ),
 				'<code>' . $this->theme_slug . '</code>',
 				'<code>style.css</code>'
 			);
 		}
 
+		// Check if the ThemeURI is already in use by another theme by another author.
+		if ( $theme_uri = $this->theme->get( 'ThemeURI' ) ) {
+			$theme_uris_matches = get_posts( array(
+				'post_type'        => 'repopackage',
+				'post_status'      => array( 'publish' ),
+				'suppress_filters' => true, // This prevents the date-based query mods from running.
+				'meta_query'       => array(
+					array(
+						'key'     => '_theme_url',
+						'value'   => '"' . $theme_uri . '"', // Searching within a Serialized PHP value
+						'compare' => 'LIKE'
+					)
+				)
+			) );
+			$theme_owners = wp_list_pluck( $theme_uris_matches, 'post_author' );
+
+			if ( $theme_owners && ! in_array( $this->author->ID, $theme_owners ) ) {
+				return sprintf(
+					__( 'There is already a theme using the Theme URL %s by a different author. TODO Please change ??? TODO', 'wporg-themes' ),
+					'<code>' . esc_html( $theme_uri ) . '</code>'
+				);
+			}
+		}
+
 		// We know it's the correct author, now we can check if it's suspended.
 		if ( ! empty( $this->theme_post ) && 'suspend' === $this->theme_post->post_status ) {
 			/* translators: %s: mailto link */
 			return sprintf( __( 'This theme is suspended from the Theme Repository and it can&rsquo;t be updated. If you have any questions about this please contact %s.', 'wporg-themes' ),
 				'<a href="mailto:themes@wordpress.org">themes@wordpress.org</a>'
 			);
 		}
 
 		// Don't send special themes through Theme Check.
 		if ( ! has_category( 'special-case-theme', $this->theme_post ) ) {
 			// Pass it through Theme Check and see how great this theme really is.
 			$result = $this->check_theme( $theme_files );
 
 			if ( ! $result ) {
 				/* translators: 1: Theme Check Plugin URL, 2: make.wordpress.org/themes */
Index: query-modifications.php
===================================================================
--- query-modifications.php	(revision 8028)
+++ query-modifications.php	(working copy)
@@ -96,31 +96,31 @@ function wporg_themes_pre_get_posts( $qu
 			// Only include themes that have existed for at least 2 weeks into the popular listing
 			// This avoids cases where a new theme skews our popularity algorithms.
 			$query->query_vars['date_query']['existing_themes_only'] = array(
 				'column' => 'post_date',
 				'before'  => date( 'Y-m-d', strtotime( '-2 weeks' ) )
 			);
 
 			// Sort by the popularity meta key
 			$query->query_vars['meta_key'] = '_popularity';
 			$query->query_vars['meta_type'] = 'DECIMAL(20,10)';
 			$query->query_vars['orderby'] = 'meta_value DESC';
 			break;
 	}
 
 	// Unless a specific theme, or author is being requested, limit results to the last 2 years.
-	if ( empty( $query->query_vars['name'] ) && empty( $query->query_vars['author_name'] ) && ! in_array( $query->query_vars['browse'], array( 'favorites', 'new', 'updated' ) ) ) {
+	if ( empty( $query->query_vars['suppress_filters'] ) && empty( $query->query_vars['name'] ) && empty( $query->query_vars['author_name'] ) && ! in_array( $query->query_vars['browse'], array( 'favorites', 'new', 'updated' ) ) ) {
 		$query->query_vars['date_query']['recent_themes_only'] = array(
 			'column' => 'post_modified',
 			'after'  => date( 'Y-m-d', strtotime( '-2 years' ) ),
 		);
 	}
 
 	// Prioritize translated themes for localized requests, except when viewing a specific ordered themes.
 	if ( 'en_US' !== get_locale() && ! in_array( $query->query_vars['browse'], array( 'favorites', 'new', 'updated' ) )  ) {
 		add_filter( 'posts_clauses', 'wporg_themes_prioritize_translated_posts_clauses' );
 	}
 
 }
 add_action( 'pre_get_posts', 'wporg_themes_pre_get_posts' );
 
 /**
