@@ -294,33 +294,39 @@ func CanUserForkRepo(user *user_model.User, repo *repo_model.Repository) (bool,
294
294
return false , nil
295
295
}
296
296
297
+ // FindUserOrgForks returns the forked repositories for one user from a repository
298
+ func FindUserOrgForks (repoID , userID int64 ) ([]* repo_model.Repository , error ) {
299
+ var cond builder.Cond = builder .And (
300
+ builder.Eq {"fork_id" : repoID },
301
+ builder .In ("owner_id" ,
302
+ builder .Select ("org_id" ).
303
+ From ("org_user" ).
304
+ Where (builder.Eq {"uid" : userID }),
305
+ ),
306
+ )
307
+
308
+ var repos []* repo_model.Repository
309
+ return repos , db .GetEngine (db .DefaultContext ).Table ("repository" ).Where (cond ).Find (& repos )
310
+ }
311
+
297
312
// GetForksByUserAndOrgs return forked repos of the user and owned orgs
298
313
func GetForksByUserAndOrgs (user * user_model.User , repo * repo_model.Repository ) ([]* repo_model.Repository , error ) {
299
314
var repoList []* repo_model.Repository
300
315
if user == nil {
301
316
return repoList , nil
302
317
}
303
- var forkedRepo * repo_model.Repository
304
318
forkedRepo , err := repo_model .GetUserFork (repo .ID , user .ID )
305
319
if err != nil {
306
320
return repoList , err
307
321
}
308
322
if forkedRepo != nil {
309
323
repoList = append (repoList , forkedRepo )
310
324
}
311
- canCreateRepos , err := GetOrgsCanCreateRepoByUserID ( user .ID )
325
+ orgForks , err := FindUserOrgForks ( repo . ID , user .ID )
312
326
if err != nil {
313
- return repoList , err
314
- }
315
- for _ , org := range canCreateRepos {
316
- forkedRepo , err := repo_model .GetUserFork (repo .ID , org .ID )
317
- if err != nil {
318
- return repoList , err
319
- }
320
- if forkedRepo != nil {
321
- repoList = append (repoList , forkedRepo )
322
- }
327
+ return nil , err
323
328
}
329
+ repoList = append (repoList , orgForks ... )
324
330
return repoList , nil
325
331
}
326
332
0 commit comments