mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Fix missing collabrative repos (#2367)
* fix missing collabrative repos * fix bug of collabrative * fix SQL quotes
This commit is contained in:
		@@ -120,10 +120,12 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
				
			|||||||
		opts.Page = 1
 | 
							opts.Page = 1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var starJoin bool
 | 
				
			||||||
	if opts.Starred && opts.OwnerID > 0 {
 | 
						if opts.Starred && opts.OwnerID > 0 {
 | 
				
			||||||
		cond = builder.Eq{
 | 
							cond = builder.Eq{
 | 
				
			||||||
			"star.uid": opts.OwnerID,
 | 
								"star.uid": opts.OwnerID,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							starJoin = true
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	opts.Keyword = strings.ToLower(opts.Keyword)
 | 
						opts.Keyword = strings.ToLower(opts.Keyword)
 | 
				
			||||||
@@ -133,12 +135,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Append conditions
 | 
						// Append conditions
 | 
				
			||||||
	if !opts.Starred && opts.OwnerID > 0 {
 | 
						if !opts.Starred && opts.OwnerID > 0 {
 | 
				
			||||||
		cond = cond.And(builder.Eq{"owner_id": opts.OwnerID})
 | 
							var searcherReposCond builder.Cond = builder.Eq{"owner_id": opts.OwnerID}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !opts.Private {
 | 
					 | 
				
			||||||
		cond = cond.And(builder.Eq{"is_private": false})
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if opts.Searcher != nil {
 | 
							if opts.Searcher != nil {
 | 
				
			||||||
			var ownerIds []int64
 | 
								var ownerIds []int64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -153,14 +150,19 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
				
			|||||||
				ownerIds = append(ownerIds, org.ID)
 | 
									ownerIds = append(ownerIds, org.ID)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		searcherReposCond := builder.In("owner_id", ownerIds)
 | 
								searcherReposCond = searcherReposCond.Or(builder.In("owner_id", ownerIds))
 | 
				
			||||||
			if opts.Collaborate {
 | 
								if opts.Collaborate {
 | 
				
			||||||
			searcherReposCond = searcherReposCond.Or(builder.Expr(`id IN (SELECT repo_id FROM "access" WHERE access.user_id = ? AND owner_id != ?)`,
 | 
									searcherReposCond = searcherReposCond.Or(builder.Expr("id IN (SELECT repo_id FROM `access` WHERE access.user_id = ? AND owner_id != ?)",
 | 
				
			||||||
					opts.Searcher.ID, opts.Searcher.ID))
 | 
										opts.Searcher.ID, opts.Searcher.ID))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		cond = cond.And(searcherReposCond)
 | 
							cond = cond.And(searcherReposCond)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if !opts.Private {
 | 
				
			||||||
 | 
							cond = cond.And(builder.Eq{"is_private": false})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(opts.OrderBy) == 0 {
 | 
						if len(opts.OrderBy) == 0 {
 | 
				
			||||||
		opts.OrderBy = "name ASC"
 | 
							opts.OrderBy = "name ASC"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -168,7 +170,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
 | 
				
			|||||||
	sess := x.NewSession()
 | 
						sess := x.NewSession()
 | 
				
			||||||
	defer sess.Close()
 | 
						defer sess.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if opts.Starred && opts.OwnerID > 0 {
 | 
						if starJoin {
 | 
				
			||||||
		count, err = sess.
 | 
							count, err = sess.
 | 
				
			||||||
			Join("INNER", "star", "star.repo_id = repository.id").
 | 
								Join("INNER", "star", "star.repo_id = repository.id").
 | 
				
			||||||
			Where(cond).
 | 
								Where(cond).
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,6 +117,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
 | 
				
			|||||||
			Searcher:    ctx.User,
 | 
								Searcher:    ctx.User,
 | 
				
			||||||
			OrderBy:     orderBy,
 | 
								OrderBy:     orderBy,
 | 
				
			||||||
			Private:     opts.Private,
 | 
								Private:     opts.Private,
 | 
				
			||||||
 | 
								Collaborate: true,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.Handle(500, "opts.Ranger", err)
 | 
								ctx.Handle(500, "opts.Ranger", err)
 | 
				
			||||||
@@ -131,6 +132,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
 | 
				
			|||||||
				Page:        page,
 | 
									Page:        page,
 | 
				
			||||||
				PageSize:    opts.PageSize,
 | 
									PageSize:    opts.PageSize,
 | 
				
			||||||
				Searcher:    ctx.User,
 | 
									Searcher:    ctx.User,
 | 
				
			||||||
 | 
									Collaborate: true,
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				ctx.Handle(500, "SearchRepositoryByName", err)
 | 
									ctx.Handle(500, "SearchRepositoryByName", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -212,6 +212,7 @@ func Profile(ctx *context.Context) {
 | 
				
			|||||||
				Page:        page,
 | 
									Page:        page,
 | 
				
			||||||
				IsProfile:   true,
 | 
									IsProfile:   true,
 | 
				
			||||||
				PageSize:    setting.UI.User.RepoPagingNum,
 | 
									PageSize:    setting.UI.User.RepoPagingNum,
 | 
				
			||||||
 | 
									Collaborate: true,
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				ctx.Handle(500, "SearchRepositoryByName", err)
 | 
									ctx.Handle(500, "SearchRepositoryByName", err)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user